Come fare una selezione ad alte prestazioni di 10 elementi più o meno e quindi sapere ogni volta che l'utente corrente ha già visualizzato l'elemento in mongodb?[chiuso]

StackOverflow https://stackoverflow.com//questions/23047119

Domanda

Vorrei implementare una funzione come in youtube dove sai quali video hai visto.

Devo trovare delle soluzioni:

  • Memorizzare i video riprodotti nella memoria locale e utilizzare questi dati per aggiornare l'interfaccia utente.(Ciò richiederà un elevato carico di dati all'avvio se i dati non sono già nel locastorage e l'utente ha visualizzato molti video)
  • Archiviare i dati in una tabella, ovviamente, e dopo aver ottenuto i risultati della query, ottenere ogni informazione video correlata all'utente corrente.Questo modo richiederebbe troppe domande a mio parere.

Cosa potresti suggerire?

È stato utile?

Soluzione

Archiviare i dati in una tabella, ovviamente, e dopo aver ottenuto i risultati della query, ottenere ogni informazione video correlata all'utente corrente.Questo modo richiederebbe troppe domande a mio parere.

Non vedo come ciò richieda molte query, ne hai solo bisogno di due:uno "normale", uno che usa $in:

Assumere raccolta videos { _id, title, description, uploader, date, ... } e una collezione userRecentVideos { userId, videoIds : [1, 912, 234234, ... ] },

questo andrà bene:

var recent = db.userRecentVideos.find({"userId" : myUserId})[0].videoIds;
var videoInfo = db.videos.find({"_id" : {$in : recent}});

In alternativa, è possibile esporre un getVideoInfos Endpoint HTTP che accetta un elenco di ID e restituisce un elenco di informazioni meta video.

Il videoIds dovrebbe avere una dimensione fissa e dovrebbe essere inizializzato a tutti gli 0 o qualcosa del genere in modo che l'array non cresca continuamente.

Se vuoi davvero memorizzare l'intera cronologia, sarebbe meglio non usare un array incorporato ma rendere questa una collezione di linker in questo modo:

videoHistory { _id, userId, videoId }

Metti un indice su {_id, userId}, e Lei può ottenere i n più recenti videos giocati per ogni utente, supponendo _id è una chiave monotona come un id oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top