2012-08-24 26 views
6

lo que permite decir mi chatsDB está llena de estos datos:¿Cómo capturar solo valores distintos en mongoDB y meteoro?

{_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!"} 

quiero devolver un conjunto único de los resultados de la consulta de este MongoDB. ¿Cómo hago esto?

Por ejemplo en SQL + php:

Select fromPerson Distinct from chatsDB;

Mi pensamiento ahora es hacer que la plantilla con una lista de desde y hacia la gente para conseguir un "chatUserList" de las personas que un usuario ha hablado con.

Respuesta

-1

Eche un vistazo a la documentación de mongodb al this page. Describe cómo crear una consulta distinta.

6

MongoDB tiene un comando distinct() que hace exactamente lo que está buscando en este caso.

Ejemplo encontrar remitentes distintos para todos los chats:

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

Ejemplo usando un filtro de consulta para encontrar personas únicas que envían mensajes a 'John Smith':

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

Si esto va a ser una tipo de consulta común para su aplicación, debe agregar los índices apropiados ... por ejemplo, en fromPerson o (fromPerson, toPerson).

+0

pero estoy usando meteoro y las colecciones con meteoro, a mi entender, no te permiten hacer db.chatsDB. cualquier cosa ... Por ejemplo tengo: Mensajes = new Meteor.Collection ('mensajes'); luego yo llamaría a Messages.find(); – user1596798

+1

Tengo el mismo problema al intentar ejecutar un objeto distinto en Meteor. La consola de Javascript dice . La distinción no es una función. ¿Entonces supongo que no es compatible con Meteor? – Poliquin

+4

Resulta que Meteor todavía no tiene ayudantes para las funciones 'distinct()' o 'aggregate()' de MongoDB :(. Una respuesta más relevante con un prototipo de función 'distinct' es: [StackOverflow: implementación mongodb distinct() en Meteor en el servidor] (http://stackoverflow.com/questions/14901761). Esto se basa en una [solicitud de extracción para aggregate()] (https://github.com/meteor/meteor/pull/644) que aparece haber sido cerrado pero no fusionado – Stennie

Cuestiones relacionadas