我正在使用Rails 4.0和MongoDB(Mongoid),我有以下代码来创建文档:
lines.each do |l|
Insert.create(:position => 0, :content => l, :schema_id => Moped::BSON::ObjectId.from_string("52419d2f80a9b88bb9000002"))
end
这工作正常,我在我的 Mongo 数据库中得到以下输出:
{
"_id": {
"$oid": "5241ff1280a9b8f16e000057"
},
"position": "0",
"content": "blabla",
"schema_id": "52419d2f80a9b88bb9000002"
}
唯一的问题是,我想有一个"$oid":在实际schema_id之前,如下所示:
...
"schema_id": {
"$oid": "52419d2f80a9b88bb9000002"
}
我真的很困惑如何手动插入"$oid"后跟冒号......
如果你能帮助我,那就太好了...
提前感谢!!
你根本不应该有$oid
,无论是在你的schema_id还是在_id中,这将使索引操作变得困难,或者不可能进入Mongodb。您可能$oid因为您可能会以某种方式将文档解析为 json 以插入数据库,无论如何,如果我是你,我会编写一个迁移来在数据库层中解决此问题,并修复代码以在持久之前不使用 JSON 版本。
我的怀疑就像亚瑟一样,我会尽力澄清。 您应该重新检查您的 Ruby 代码,并确保您没有以某种方式隐式地将对象 ID 串化到您没有放在问题中的某些 Ruby 代码中。
当我试图破译它时,你的问题让我感到困惑,当你尝试调试时,你可能会感到困惑。 这是因为您正在使用 Ruby,但向我们提供了既不是来自 Ruby 也不是来自 mongo shell 的 JSON 文档,这表明您正在尝试从与相关代码分开的上下文中进行调试。
我委婉地建议你遵循标准的Rails编写测试的做法。 请编写一个测试,通过插入文档并使用 Ruby 转储有问题的文档来重现您的问题。