mongodb初始负载—动态构建DBRef

mongodb初始负载—动态构建DBRef,mongodb,mongo-shell,Mongodb,Mongo Shell,我正在尝试使用db.collections.insert将初始数据加载到mongodb。我有一个案例,我将插入town集合,然后插入zipcode集合。zipcode集合是指城镇集合。然而,当我写剧本时,我不知道这个城镇的id。想知道如何动态构建参考 在下面的示例中,我需要将Mancherster town的id填入“未知”位置 如果有不同的方式来加载初始数据而不是db.collections.insert,我也想知道。您可以生成自己的ObjectId。调整你的榜样 var town_id =

我正在尝试使用db.collections.insert将初始数据加载到mongodb。我有一个案例,我将插入town集合,然后插入zipcode集合。zipcode集合是指城镇集合。然而,当我写剧本时,我不知道这个城镇的id。想知道如何动态构建参考

在下面的示例中,我需要将Mancherster town的id填入“未知”位置


如果有不同的方式来加载初始数据而不是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 } })
或者,由于您似乎正在使用
\u id
的自定义值来表示
状态
zipcode
,因此您可以创建自己的唯一
\u id
,而不是生成一个


虽然我对您的用例不太了解,但我也必须指出,我认为您做了太多的引用。dbref几乎是不必要的。在这种情况下,您知道
state
将引用
state
集合,那么为什么要将其放在
state
字段中呢?只需将
state
字段的值设置为state文档的
\u id
。更好的是,根本不引用,只需将
“state”:“CT”
。我怀疑你真的需要一个单独的
集合。只有50个州,名称不会改变。

可以使用批插入或mongoimport/restore@Sammaye这不能解决我的问题。我仍然需要一种方法来动态地找到_id。你为什么不知道镇参考号?当您插入时,默认返回的是包含_id字段的文档。您是对的。我将删除state的DBref。不过我想保留国家收藏。这有助于我快速获得州列表。
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 } })