У меня есть webapp, где я создан встроенный документ для обучения. Документ о работе выглядит примерно так:Встроенный документ MongoDB BSON ID
"educations" : [
{
"school" : "Brandywine High School",
"major" : "Testingasdf",
"grad_year" : ISODate("1979-01-01T00:00:00Z"),
"school_type" : "Graduate",
"_id" : ObjectId("4fb26c9ce5be08208b000ce4")
}
],
"email" : "[email protected]",
Образование hash содержит подробную информацию о работе. Я заметил, что если я создать хэш без ID:
User.collection.update(
{ _id: @user.id },
{ :$push => { educations: education } },
{ safe: true }
)
и я запрашиваю образование из консоли Rails, идентификатор будет меняться каждый раз:
irb(main):004:0> User.brandon.educations.map(&:id)
=> [BSON::ObjectId('4fb26e13e5be082384000007')]
irb(main):005:0> User.brandon.educations.map(&:id)
=> [BSON::ObjectId('4fb26e13e5be082384000009')]
Однако, если я делаю это:
User.collection.update(
{ _id: @user.id },
{ :$push => { educations: BSON::ObjectId.create_pk(education) } },
{ safe: true }
)
Идентификатор идентичен при каждом запросе с консоли. Из-за этого у меня возникают проблемы со ссылкой на образование, чтобы отредактировать встроенный документ в браузере.
Должен ли я всегда предоставлять BSON ID при создании встроенного документа?
Можете ли вы изменить свой вопрос, чтобы показать весь образец документа? Что вы подразумеваете под «идентификатор будет меняться каждый раз»? Можете ли вы показать пример этого? –
Обновлен документ и методы, используемые для обновления. – user577808