El .distinct()
El método es una implementación más antigua que es más un método de conveniencia que envuelve mapReduce. Para cualquier cosa más complicada que las operaciones simples, debe usar .aggregate()
.
Entonces el equivalente de shell:
db.collection.aggregate([
{ "$match": { "$and": [ { "prop1": "" }, { "prop2": "" } ] } },
{ "$group": { "_id": "$messageId" } }
])
Los documentos simplemente se forman como una cadena de documentos BSON. Hay varios ejemplos aquí .