Mongodb 未捕获异常:can';我没有。在字段名中

Mongodb 未捕获异常:can';我没有。在字段名中,mongodb,mongodb-query,Mongodb,Mongodb Query,我正在尝试更新我的成员副本集合中的一组文档 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

我正在尝试更新我的成员副本集合中的一组文档

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]

我理解这个问题,但我找不到解决方案,因此我非常感谢您能提供的任何帮助。

如果您的字段子文档中没有任何内容,您可以使用它,如果您的文档中有任何内容而不仅仅是
字段
,那么您应该使用它

db.members\u copy.update(
{u id:myDoc.\u id},
{“$set”:{“fields.shop”:[{“id”:319,“value”:“Los Angeles”}]}
);
但是,您不能在不替换整个内容的情况下将项目添加到子文档中。因此,如果您想在现有的
条码
中添加
商店
,您需要这样做

db.members\u copy.update(
{u id:myDoc.\u id},
{“$set”:{
“字段”:{
“酒吧”:“富”,
“商店”:[{“id”:319,“价值”:“洛杉矶”}]
}
}
);

以这种方式使用子文档是很危险的。

所以我无法像这样更新子文档?您的目标集合中有fields子文档吗?