Поддерживается ли порядок внедренных объектов в MongoDB? - PullRequest
1 голос
/ 09 октября 2011

Название в основном описывает вопрос. Я предполагаю, что если он выйдет в виде массива, он будет поддерживаться, но если хеш, он не будет. Я просто не уверен, что он использует.

Кроме того, я должен упомянуть, что я использую mongoid (оболочку ORM для Ruby) на случай, если что-то изменится.

Ответы [ 2 ]

2 голосов
/ 09 октября 2011

Чтобы ответить на ваш основной вопрос: нет .

На самом деле, есть ошибка при переупорядочении ключей в JIRA .Встроенный объект - это просто объект ключей / значений, хранящихся внутри другого значения.Так что порядок в БД точно не гарантирован.

С точки зрения BSON, порядок не должен иметь значения.{x:1,y:2} совпадает с {y:2,x:1}.

С точки зрения драйвера обе эти записи должны возвращать один и тот же объект.

Однако, если вы используете массив встроенных документов, тогда массив должен сохранять свой порядок.

Таким образом, вы не можете зависеть от порядка ключей для каких-либо объектов (встроенных или нет), но от порядка массиваобъект должен работать.

0 голосов
/ 30 октября 2011

Из документов Mongoid: 1 - Многие встроенные отношения хранятся в виде массива хэшей.

http://mongoid.org/docs/relations/embedded/1-n.html

Это означает, что вы можете использовать вызов типа parent.embeddedobject.first для получения первого внедренного объекта в массиве.Вы также можете использовать нотацию добавления массива (person.addresses << Address.new), чтобы добавить новые встроенные объекты. </p>

Я также использую mongoid, и я нашел этот railscast действительно полезным.Проверьте это, если вы еще этого не сделали.

http://railscasts.com/episodes/238-mongoid

TL: DR;Я нуб, но я думаю, что порядок сохранен.

...