我通过vb脚本从excel生成JSON.我使用它导入到mongodbmongoimport --jsonArray
它在每个文档上创建一个objectId,但不在子文档上创建.什么是创造这些的最佳方式?是否有可能在monogoimport上有一些选项?或者我是否必须使用API来执行此操作?或者我可以在我的json中编写任何内容以使其在导入时生成一个?
是否有可能在monogoimport上有一些选项?
不.
有没有什么我可以写在我的json中使它在导入时生成一个?
不生成ObjectId,但您可以使用以下表示法在JSON中包含ObjectId:
{ "test" : { "$oid" : "5519e8ac996ef7f4636bfaec" } }
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为testvalue 的字段ObjectId("5519e8ac996ef7f4636bfaec").密钥的值$oid必须是有效的ObjectId.
我必须使用API来做吗?
是的,这就是生成ObjectId值所需的.您可以使用例如Python驱动程序编写一个小脚本来执行导入并生成ObjectId作为其一部分,或者使用mongoimport然后扫描集合并使用ObjectId更新每个子文档:
> db.test.find()
{ "_id" : ObjectId("5519e8ac996ef7f4636bfaec"), "a" : [ { "x" : 1 }, { "y" : 2 } ] }
> db.test.find().forEach(function(doc) {
for (var i = 0; i < doc.a.length; i++) {
doc.a[i]._id = ObjectId()
}
db.test.update({ "_id" : doc._id }, doc)
} )
Run Code Online (Sandbox Code Playgroud)
请注意,除非有一些特定的理由在子文档上有_id/ObjectId,比如_id是对另一个文档的引用,否则在每个子文档上放置ObjectId既不必要也不可取.
| 归档时间: |
|
| 查看次数: |
2484 次 |
| 最近记录: |