2012-08-24 12 views
6

Allora supponiamo mia chatsDB è pieno di questi dati:Come prendere solo valori distinti in mongoDB e meteora?

{_id: "39e92f36-5d0f-44b7-8948-89be9b85bd08", fromPerson: "John Smith", toPerson: "Bob Smith", message: "Hey Buddy"} 
{_id: "39e92f36-5d0f-44b7-8948-89be9b85bd08", fromPerson: "John Smith", toPerson: "Joe Smith", message: "Hi how you doing"} 
{_id: "39e92f36-5d0f-44b7-8948-89be9b85bd08", fromPerson: "Tom Smith", toPerson: "Bob Smith", message: "Hello Again!"} 
{_id: "39e92f36-5d0f-44b7-8948-89be9b85bd08", fromPerson: "Bob Smith", toPerson: "John Smith", message: "Hello Again!"} 

Voglio tornare un unico insieme di risultati di query questo MongoDB. Come faccio a fare questo?

Per esempio in SQL + php:

Select fromPerson Distinct from chatsDB;

Il mio pensiero in questo momento è quello di rendere il modello con un elenco di da e per le persone a ottenere un "chatUserList" del popolo un utente ha parlato con.

risposta

-1

Dai un'occhiata alla documentazione di mongodb al numero this page. Descrive come creare una query distinta.

6

MongoDB ha un comando distinct() che fa esattamente ciò che si sta cercando in questo caso.

Esempio trovare mittenti distinti per tutte le chat:

> db.chatsDB.distinct('fromPerson'); 
[ "John Smith", "Tom Smith", "Bob Smith" ] 

Esempio di utilizzo di un filtro di query per trovare persone uniche che inviano messaggi a 'John Smith':

> db.chatsDB.distinct('fromPerson', { toPerson: 'John Smith'}); 
[ "Bob Smith" ] 

Se questo sta per essere un tipo di query comune per l'applicazione, è necessario aggiungere indici appropriati .. ad esempio, su fromPerson o (fromPerson, toPerson).

+0

ma sto usando meteor e le collezioni con meteora, a mio avviso non ti permettono di fare db.chatsDB. qualsiasi cosa ... Ad esempio: Messaggi = new Meteor.Collection ('messaggi'); quindi chiamerei Messages.find(); – user1596798

+1

Ho lo stesso problema cercando di eseguire un distinto su Meteor. La console Javascript dice: . Disturbo non è una funzione. Quindi immagino che non sia supportato in Meteor? – Poliquin

+4

Si scopre che Meteor non ha ancora helper per le caratteristiche 'distinct()' o 'aggregate()' di MongoDB :(. Una risposta più rilevante con un prototipo di funzione 'distinct' è: [StackOverflow: implementazione mongodb distinct() in Meteor sul server] (http://stackoverflow.com/questions/14901761). Si basa su una [pull request for aggregate()] (https://github.com/meteor/meteor/pull/644) che appare essere stato chiuso ma non unito – Stennie

Problemi correlati