gpt4 book ai didi

mongodb 初始加载 - 即时构建 DBRef

转载 作者:可可西里 更新时间:2023-11-01 09:51:33 24 4
gpt4 key购买 nike

我正在尝试使用 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"}});

如果有不同的方式来加载我的初始数据而不是 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 } })

或者,由于您似乎正在为 statezipcode 使用 _id 的自定义值,您可以编写自己的唯一 _id 而不是生成一个。

虽然我对你的用例了解不多,但我也不得不说我认为你引用太多了。 DBRef 几乎从不需要。在这种情况下,您知道 state 将引用 state 集合,那么为什么要把它放在 state 字段中呢?只需将 state 字段的值设为状态文档的 _id 即可。更好的是,根本不要引用,只需输入 "state": "CT"。我怀疑您是否真的需要一个单独的 state 集合。只有 50 个州,而且名称不会改变。

关于mongodb 初始加载 - 即时构建 DBRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27966026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com