sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoid:límite en consultas distintas

distinto en MongoDB es un comando y los comandos no devuelven cursores. Solo los cursores admiten limit () mientras que los resultados de los comandos no, al igual que sort () no se admite aquí, y creo que ordenar es lo suficientemente importante como para ejecutarlo primero, de lo contrario, nunca sabrá qué "primeros dos" elementos distintos obtiene

Hay una forma de evitar esto, pero utilizando el marco de agregación. En el lenguaje de consulta simple de MongoDB (como lo usa en el shell de MongoDB), usaría:

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

En Mongoid, sospecho que puedes cambiar la primera línea a:

Place.collection.aggregate( [