#mongodb
#mongodb
Вопрос:
Я использую предложение $ in в запросе mongodb. Однако я хочу, чтобы мои результаты были упорядочены точно так же, как мой список ввода, используемый в предложении $ in.
Результаты, которые я получаю обратно, находятся в том порядке, в котором были вставлены объекты.
Вся документация, которую я прочитал до сих пор, говорит мне, что функция сортировки курсора работает только с полями документа. Означает ли это, что я не могу выполнить вышеуказанное?
Ответ №1:
MongoDB не выполняет вставку в каком-либо определенном порядке. Однако вы можете отсортировать свои результаты.
Смотрите:
http://www.mongodb.org/display/DOCS/Advanced Queries#AdvancedQueries-$in
db.updates.ensureIndex( { ts : 1 } ); // ts == timestamp
var myFriends = myUserObject.friends; // let's assume this gives us an array of DBRef's of my friends
var latestUpdatesForMe = db.updates.find( { user : { $in : myFriends } } ).sort( { ts : -1 } ).limit(10);
Комментарии:
1. Спасибо, Эван. Однако в моем конкретном случае порядок списка запроса $ in определяется извне. Итак, я действительно хочу, чтобы мои результаты были отсортированы в том же произвольном порядке, что и во входном списке. Я пытаюсь извлечь объекты на основе их идентификаторов после того, как список идентификаторов отсортирован в другом месте.
2. Возможно, вы просто захотите сделать это постфактум. Я обнаружил, что любую сложную сортировку лучше выполнять на веб-уровне, поскольку это дешевле, чем делать это на уровне базы данных.
3. Спасибо, Эван. Именно так я планирую сделать это сейчас. Большое спасибо за вашу помощь.