У меня проблема с порядком в Mongoid (2.0.0.beta.17 и 2.0.2) / MongoDB. Возможно, я просто недостаточно опытен с MongoDB, и некоторые из вас могут помочь мне понять, что я делаю неправильно?
Симптомы пользовательского уровня:
- Запросы не сортируются правильно по дате или идентификатору
- Сообщения пользователей не появляются, когда они кажутся такими, какими они должны быть (это социальная сеть в стиле Twitter для садоводов , а самые последние сообщения иногда не отображаются)
irb(main):024:0> Update.all.size
=> 551
Update.ordered.size # (see below for definition)
=> 490
irb(main):010:0> Update.all.select{|u| u.created_at.nil?}
=> []
Когда я вхожу в оболочку монго и делаю:
var cursor = db.updates.find({}, {'_id': 1}).limit(600);
while (cursor.hasNext()) printjson(cursor.next());
Я получаю 454 строк.
var cursor = db.updates.find({}, {'_id': 1}).sort({created_at : 1}).limit(600);
while (cursor.hasNext()) printjson(cursor.next());
Также возвращает 454 строк.
db.updates.find({}).sort({created_at: -1}).limit(1);
возвращает обновление с 23 февраля. Но у меня есть обновления со вчерашнего дня в MongoDB.
Есть идеи?
Моя модель:
class Update
include Mongoid::Document
include Mongoid::Timestamps
include Paperclip
field :body
...
index [[ :created_at, Mongo::DESCENDING ]]
...
named_scope :ordered, :order_by => ([[:created_at, :desc]])
...
end