MongoDB - 我可以使用ObjectId作为密钥吗?

时间:2010-12-29 15:10:45

标签: mongodb

我有一个商店列表,需要为它们添加注释。这些注释需要有一个ID,以便可以编辑和删除它们 - 这适用于web应用,其中id参数将包含用于标识对象的字符串。我对MongoDB并不太熟悉,但是认为在地图中使用ObjectId作为关键字,这将是一个简单的解决方案。如果在MongoDB中有更好的方法,请纠正我。

无论如何,当我尝试使用(new ObjectId())作为键时,我在shell中遇到“无效的属性id”错误。

db.locations.update({_id: 'store1'}, {$set: {'notes': {(new ObjectId()): 'note1'}}})

我做错了什么想法?

3 个答案:

答案 0 :(得分:4)

密钥总是MongoDB中的字符串。要设置嵌套字段,必须将字符串连接在一起。

db.locations.update({_id: 'store1'}, {$set: {'notes.' + (new ObjectId()).toString(): 'note1'}})

答案 1 :(得分:1)

尝试使用类似的东西

db.locations.update({_id: 'store1'}, {$set: {'notes': { _id :  ObjectId("47cc67093475061e3d95369d")}}})

检查this link了解详情

答案 2 :(得分:1)

对我来说,好像你应该有_id用于笔记的文件。 “store1”的当前ID应该是此文档的属性。换句话说,您需要在此调整您的架构。然后,您不需要将对象ID附加到注释中。它还有助于稍后更快地查询此文档。