未被捕的例外:不能有。在字段名称中

时间:2014-03-05 08:22:07

标签: mongodb mongodb-query

我正在尝试更新member_copy集合中的一组文档。

db.members_copy.find({"fields.shop.id": 321}).forEach(function(myDoc) {     
    db.members_copy.update({ "_id": myDoc._id}, { "fields.shop": [{"id": 319, "value": "Los Angeles"}] });
});

我收到以下错误:

uncaught exception: can't have . in field names [fields.shop]

我理解这个问题,但我找不到解决方案,所以我很感激我能得到的任何帮助。

1 个答案:

答案 0 :(得分:9)

如果您的字段子文档中没有任何内容,则可以使用$set执行此操作,如果除了fields之外还有db.members_copy.update( { "_id": myDoc._id}, { "$set": { "fields.shop": [{"id": 319, "value": "Los Angeles"}] } } ); 字段,那么您应该使用{{3}}文档。

shop

但是你不能做的是将项目添加到子文档而不替换整个事物。因此,如果您想将bar添加到存在db.members_copy.update( { "_id": myDoc._id}, { "$set": { "fields": { "bar": "foo", "shop": [{"id": 319, "value": "Los Angeles"}] } } ); 的位置,则需要执行此操作

{{1}}

以这种方式使用子文档只是一个危险。