И distinct
, и count
игнорируют команду limit
в Mongoid.С count
вы можете передать true (то есть User.limit(5).count(true)
), чтобы заставить его обратить внимание на область.К сожалению, такой хитрости не существует, насколько я знаю (см. Docs / source здесь ).
Если вы хотите просто взять первые 5 first_name
, то выможет сделать это (не различимо):
User.desc(:created_at).limit(5).map(&:first_name)
Это будет соответствовать пределу, но при этом загрузить 5 полных объектов из базы данных (затем отбросить оставшуюся часть объекта, чтобы дать вам полныйназвание).Если вам действительно нужно работать по-другому, вам лучше перейти к решению на основе инфраструктуры агрегации.
Я не тестировал, но, похоже, это то, что вы ищете: https://stackoverflow.com/a/17568267/127311