MongoDB - Могу ли я использовать ObjectId в качестве ключа? - PullRequest
5 голосов
/ 29 декабря 2010

У меня есть список магазинов, и мне нужно добавить к ним заметки.Эти заметки должны иметь идентификатор, чтобы их можно было редактировать и удалять - это для веб-приложения, где параметр id будет содержать строку, используемую для идентификации объекта.Я не слишком знаком с MongoDB, но подумал, что наличие этих заметок на карте с ключом ObjectId будет простым решением.Пожалуйста, исправьте меня, если есть лучший способ сделать это в MongoDB.

В любом случае, когда я пытаюсь использовать (new ObjectId ()) в качестве ключа, я получаю ошибку «неверный идентификатор свойства» в оболочке.

db.locations.update({_id: 'store1'}, {$set: {'notes': {(new ObjectId()): 'note1'}}})

Есть идеи, что я делаю не так?

Ответы [ 3 ]

4 голосов
/ 29 декабря 2010

Ключи всегда являются строками в MongoDB. Чтобы установить вложенное поле, вы должны соединить строки вместе.

db.locations.update({_id: 'store1'}, {$set: {'notes.' + (new ObjectId()).toString(): 'note1'}})
1 голос
/ 22 января 2014

Мне кажется, у вас должен быть документ, где _id для ваших заметок. Текущий идентификатор «store1» должен быть атрибутом этого документа. Другими словами, вам нужно настроить свою схему здесь. Тогда вам не потребуется добавлять идентификатор объекта в заметки. Это также поможет быстрее запросить этот документ.

1 голос
/ 29 декабря 2010

попробуйте использовать что-то вроде этого

db.locations.update({_id: 'store1'}, {$set: {'notes': { _id :  ObjectId("47cc67093475061e3d95369d")}}})

проверьте эту ссылку для более подробной информации

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