onderscheiden in MongoDB is een commando en commando's retourneren geen cursors. Alleen cursors ondersteunen limit() terwijl opdrachtresultaten dat niet doen, net zoals sort() hier niet wordt ondersteund, en ik denk dat sorteren belangrijk genoeg is om als eerste uit te voeren, anders weet je nooit welke "eerste twee" verschillende items je krijgt
Er is een manier om dit te omzeilen, maar met behulp van het aggregatieraamwerk. In gewone MongoDB-query-spraak (zoals je gebruikt op de MongoDB-shell), zou je gebruiken:
db.places.aggregate( [
{ $match: { 'tags' : { $in: [ 'food' ] } } },
{ $group: { '_id': '$name' } },
{ $sort: { 'name': 1 } },
{ $limit: 2 },
] );
In Mongoid vermoed ik dat je de eerste regel kunt wijzigen in:
Place.collection.aggregate( [