MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongoid:limite su query distinte

distinto in MongoDB è un comando e i comandi non restituiscono cursori. Solo i cursori supportano limit() mentre i risultati del comando no, proprio come sort() non è supportato qui, e penso che sort sia abbastanza importante da essere eseguito per primo, altrimenti non sai mai quali "primi due" elementi distinti ottieni

C'è un modo per aggirare questo, ma usando il framework di aggregazione. In una semplice query MongoDB parla (come usi sulla shell MongoDB), useresti:

db.places.aggregate( [
    { $match: { 'tags' : { $in: [ 'food' ] } } },
    { $group: { '_id': '$name' } },
    { $sort: { 'name': 1 } },
    { $limit: 2 },
] );

In Mongoid sospetto che tu possa cambiare la prima riga in:

Place.collection.aggregate( [