Memorizzazione / lavoro con i tag in MongoDB per un sistema di gestione dei documenti

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

  •  25-10-2019
  •  | 
  •  

Domanda

Così sto lavorando su un progetto di animali dove sto memorizzazione dei vari file di testo. Ho installato la mia app per salvare i tag come una stringa in una delle mie collezioni in modo un esempio potrebbe essere:

tag: "Linux Apache WSGI"

La conservazione e alla ricerca di loro funzionano bene ma la mia domanda arriva quando voglio fare qualcosa di simile a una tag cloud, contare tutti i vari tag, o fare un sistema di selezione dinamica basata sui tag, qual è il modo migliore per rompere li fino a lavorare? O dovrei essere la loro memorizzazione in qualche altro modo?

Logicamente ho potuto eseguire la scansione attraverso ogni record e ottenere tutti i tag, le rompono in base allo spazio, quindi memorizzare nella cache il risultato in qualche modo. Forse questa è la risposta giusta, ma ho voluto chiedere la saggezza della comunità.

sto usando pymongo di interagire con il mio database.

È stato utile?

Soluzione

O dovrei essere la loro memorizzazione in qualche altro modo?

Il metodo standard per memorizzare i tag è quello di memorizzare loro come un array. Nel tuo caso, il DB sarebbe simile:

tags: ['linux', 'apached', 'wsgi']

... qual è il modo migliore per rompere loro fino a lavoro con?

Questo è ciò che Map / Reduce è progettato per. Questo in modo efficace "analizza ogni record". L'uscita di un Map / Reduce è un'altra collezione che è possibile interrogare.

Tuttavia, c'è anche un altro modo per fare questo e questo è per mantenere "sportelli" e li aggiorna. Così, quando salva un nuovo documento anche incrementa tutti i tag relativi a tale documento.

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