Sri*_*rik 5 mongodb mongo-shell
我正在尝试使用 db.collections.insert 将初始数据加载到 mongodb。我有一个例子,我将插入城镇集合,然后插入邮政编码集合。邮政编码集合是指城镇集合。然而,当我编写脚本时,我不知道城镇的_id。想知道如何动态构建参考。
在下面的示例中,我需要将曼切斯特镇的 ID 填充到“未知”的位置。
db.town.insert({name:"Manchester",state:{$ref:"state", $id:"CT"},status:"NOT-SUBSCRIBED"});
db.zipcode.insert({_id:"06040", town:{$ref:"town", $id:"unkown"}});
db.zipcode.insert({_id:"06041", town:{$ref:"town", $id:"unkown"}});
db.zipcode.insert({_id:"06042", town:{$ref:"town", $id:"unkown"}});
Run Code Online (Sandbox Code Playgroud)
如果有不同的方式来加载我的初始数据而不是 db.collections.insert,我也想知道。
您可以生成自己的 ObjectId。调整你的例子,
var town_id = ObjectId()
db.town.insert({ "_id" : town_id, "name" : "Manchester", "state" : { "$ref" : "state", "$id" : "CT" }, "status" : "NOT-SUBSCRIBED" })
db.zipcode.insert({ "_id" : "06040", "town" : { "$ref" : "town", "$id" : town_id } })
db.zipcode.insert({ "_id" : "06041", "town" : { "$ref" : "town", "$id" : town_id } })
db.zipcode.insert({ "_id" : "06042", "town" : { "$ref" : "town", "$id" : town_id } })
Run Code Online (Sandbox Code Playgroud)
或者,由于您似乎正在使用 for_id和state的自定义值zipcode,因此您可以创建自己的唯一值,_id而不是生成一个。
虽然我对你的用例不太了解,但我也必须评论说我认为你做了太多的参考。DBRef 几乎没有必要。在这种情况下,您知道state将引用该state集合,那么为什么将其放在该state字段中呢?state只需将该字段的值设置为_id状态文档的值即可。更好的是,根本不引用而只是放置"state" : "CT". 我怀疑你真的需要一个单独的state集合。只有 50 个州,而且名称不会改变。
| 归档时间: |
|
| 查看次数: |
1033 次 |
| 最近记录: |