通过某种形式识别子字段,来自另一个集合中_id引用的迁移

时间:2013-05-24 21:10:06

标签: mongodb

过去的结构是:

City collection with documents like: {_id, name, buildings:[ _ids from Building collection ]}
Building collection with documents like: {_id, name}

然后转向:

City collection with documents like: {_id, name, buildings:[ {_id, name}, {_id, name}...]}

现在我的问题是:“建筑物”sufield中的建筑物中的_id曾经是由mongodb生成的,我只是将它插入到“建筑物”阵列中的各个城市文件中。

但是现在,当我创建一个建筑物时,我将它直接插入到数组中。但是我仍然需要客户对每个建筑物进行某种识别,但我很困惑如何做到这一点。

我想在城市文档中保存一个数值,每次插入建筑物时都会增加,并给它id。这样,它将成为该特定城市的独特之处。因此,所有具有一个默认建筑的城市都将拥有ID为0的建筑物。

对此有更聪明/更优雅的解决方案吗?

P.S:我还希望轻松访问每个单独的建筑物,您是否还认为我应该将它们作为关联数组/对象并将其作为ID?

1 个答案:

答案 0 :(得分:0)

  

我想在城市文档中保存一个数值,每次插入建筑物时都会增加,并给它id。

这不是一个好主意,因为这意味着对于每次更新,您还需要阅读。什么是最好的方式在MongoDB所做的相同机制中分配一个_id值 - 通过创建一个ObjectID值。实际上,驱动程序会生成这些ID,而不是MongoDB本身。

http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html处的文档显示了如何执行此操作:

var objectId = new ObjectID();

然后只需在建筑子文档中的name旁边添加此值。