MongoDB: отсортированные массивы - PullRequest
3 голосов
/ 17 марта 2012

Рассмотрим следующий документ MongoDB:

SomeObject {
    nested_objects_ids : [
        ObjectId( "1..." ), 
        ObjectId( "2..." ),
        ...
        ObjectId( "N..." )
    ]
}

Длина nested_object_ids не ограничена.Есть ли элегантный способ сохранить массив nested_object_ids отсортированным после нажатия произвольных значений (например, ObjectIds)?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 02 августа 2013

Теперь вы можете сделать это с помощью функции $ push to отсортированный массив: https://jira.mongodb.org/browse/SERVER-8008

2 голосов
/ 17 марта 2012

Существует ли элегантный способ сортировки массива nested_object_ids после нажатия произвольных значений?

К сожалению, нет ничего, что я бы назвал "элегантным".

Команда $push здесь не работает. Единственный вариант - вытащить весь вложенный массив в клиент, а затем переписать его с помощью $set.

.

Честно говоря, когда дело доходит до работы с "массивами объектов", MongoDB имеет ограниченную функциональность. Вы можете обновить с помощью $push, $pull и индексировать поле объекта, но это все.

Сложно обновить конкретный подобъект. И запрос не возвращает подобъект, а возвращает весь документ. Вы можете отфильтровать его до возврата nested_object_ids, но вы всегда получите весь набор там.

Вопрос к вам: почему нужно сортировать вложенные объекты ?

1 голос
/ 30 января 2013

В следующем выпуске Mongodb версии 2.4 будет использоваться сортированный $ push.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...