MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongoid - limite na consulta distinta


distinct no MongoDB é um comando e comandos não retornam cursores. Apenas os cursores suportam limit(), enquanto os resultados do comando não, assim como sort() não é suportado aqui, e acho que a classificação é importante o suficiente para ser executada primeiro, caso contrário, você nunca sabe quais "dois primeiros" itens distintos você obtém

Existe uma maneira de contornar isso, mas usando a estrutura de agregação. Na consulta simples do MongoDB (como você usa no shell do MongoDB), você usaria:
db.places.aggregate( [
    { $match: { 'tags' : { $in: [ 'food' ] } } },
    { $group: { '_id': '$name' } },
    { $sort: { 'name': 1 } },
    { $limit: 2 },
] );

No Mongoid, suspeito que você possa alterar a primeira linha para:
Place.collection.aggregate( [