MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoid - Limit für eindeutige Abfragen

Ein Unterschied in MongoDB ist ein Befehl, und Befehle geben keine Cursor zurück. Nur Cursor unterstützen limit(), während Befehlsergebnisse dies nicht tun, genau wie sort() hier nicht unterstützt wird, und ich denke, dass sort wichtig genug ist, um zuerst ausgeführt zu werden, da Sie sonst nie wissen, welche "ersten zwei" unterschiedlichen Elemente Sie erhalten

Es gibt einen Weg, dies zu umgehen, aber mit dem Aggregations-Framework. In der einfachen MongoDB-Abfragesprache (wie Sie sie in der MongoDB-Shell verwenden) würden Sie Folgendes verwenden:

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

Ich vermute, dass Sie in Mongoid die erste Zeile ändern können in:

Place.collection.aggregate( [