Mongoid: найти через массив идентификаторов

Я взял несколько идентификаторов через MapReduce. Я отсортировал эти идентификаторы по некоторым критериям и теперь мне нужно получить эти объекты в таком порядке:

MyModel.find(ids)

Верно? Но он возвращает объекты не в порядке хранения идентификаторов. Похоже, это то же самое, что и

MyModel.where(:_id.in => ids)

, который не возвращает выбранные объекты в том же порядке, что и сохраненные идентификаторы.

Теперь я могу сделать это

ids.map{|id| MyModel.find(id)}

, которое будет делать работу, но это будет стучать базу данных много раз.

-121--1226835- Где (условие). Любой () и любой (условие) эквивалент Около половины примеров, которые я вижу для запросов Linq с помощью метода Any, делают это, применяя его к результатам вызова Where (), другая половина применяет его непосредственно к коллекции. Два стиля...

Около половины примеров, которые я вижу для запросов Linq с использованием метода Any, делают это, применяя его к результатам вызова Where (), другая половина применяет его непосредственно к коллекции. Оба стиля всегда эквивалентны, или есть случаи, когда они могут вернуть разные результаты?

Мое тестирование подтверждает прежний вывод; но краевые случаи не всегда легко найти.

List<MyClass> stuff = GetStuff();
bool found1 = stuff.Where(m => m.parameter == 1).Any();
bool found2 = stuff.Any(m => m.parameter == 1);
5
задан Dan Neely 23 September 2011 в 18:09
поделиться