我有一个网络应用程序,我在其中创建了一个用于教育的嵌入式文档。工作文件看起来像这样:
"educations" : [
{
"school" : "Brandywine High School",
"major" : "Testingasdf",
"grad_year" : ISODate("1979-01-01T00:00:00Z"),
"school_type" : "Graduate",
"_id" : ObjectId("4fb26c9ce5be08208b000ce4")
}
],
"email" : "user@domain.com",
教育哈希包含作业的详细信息。我注意到,如果我创建没有 ID 的哈希:
User.collection.update(
{ _id: @user.id },
{ :$push => { educations: education } },
{ safe: true }
)
我从 Rails 控制台查询教育,ID 每次都会改变:
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 }
)
每次从控制台查询的 ID 都是相同的。因此,我无法参考在浏览器中编辑嵌入式文档的教育。
创建嵌入式文档时是否总是需要提供 BSON ID?