MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoid - limite sur les requêtes distinctes

distinct dans MongoDB est une commande et les commandes ne renvoient pas de curseurs. Seuls les curseurs prennent en charge limit() alors que les résultats de la commande ne le font pas, tout comme sort() n'est pas pris en charge ici, et je pense que le tri est suffisamment important pour être exécuté en premier, sinon vous ne savez jamais quels "deux premiers" éléments distincts vous obtenez

Il existe un moyen de contourner cela, mais en utilisant le cadre d'agrégation. En langage de requête MongoDB simple (comme vous l'utilisez sur le shell MongoDB), vous utiliseriez :

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

Dans Mongoid, je soupçonne que vous pouvez changer la première ligne en :

Place.collection.aggregate( [