0

我正在使用 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"

}

唯一的问题是,我想在实际的 schema_id 之前有一个 "$oid": ,如下所示:

...
    "schema_id": {
    "$oid": "52419d2f80a9b88bb9000002"
}

我真的很困惑如何手动插入“$oid”后跟冒号....

如果你能帮助我就太好了...

提前谢谢!!

4

2 回答 2

0

我的怀疑和亚瑟的一样,我会试着澄清一下。您应该重新检查您的 Ruby 代码,并确保您没有以某种方式在您未在问题中提出的某些 Ruby 代码中隐式地对您的对象 ID 进行字符串化。

当我试图破译它时,您的问题让我感到困惑,并且在您尝试调试时可能会让您感到困惑。这是因为您正在使用 Ruby 工作,但向我们提供的不是来自 Ruby 或 mongo shell 的 JSON 文档,这表明您正在尝试从与相关代码分开的上下文中进行调试。

我建议您遵循编写测试的标准 Rails 实践。请编写一个测试,通过插入文档来重现您的问题,并使用 Ruby 转储有问题的文档。

于 2013-11-27T04:33:04.867 回答
0

你根本不应该$oid在你的 schema_id 或在 _id 中,这会使索引操作变得困难,或者不可能进入 Mongodb。您可能有 $oid 因为您可能会以某种方式将文档解析为 json 插入数据库中,无论如何,如果我是您,我会编写迁移以在 db 层中修复此问题,并修复代码以不使用持久化之前的 JSON 版本。

于 2013-09-24T22:17:41.970 回答