mongodb - 我不能同时用$ pushAll和简单的赋值更新

时间:2013-12-13 04:34:11

标签: mongodb

以下失败:

db.test.update({_id:102},{$pushAll:{our_days:["sat","thurs","frid"]}, country:"XYZ"}, {upsert:true})

错误消息:"Invalid modifier specified: country"

正确的方法似乎是:

db.test.update({_id:102},{$pushAll:{our_days:["sat","thurs","frid"]}, $set:{country:"XYZ"}}, {upsert:true})

在同一个更新文档中,我不能将像“$ pushAll”这样的修饰符与字段:值等简单赋值混合使用?相反,我必须使用$ set修饰符进行简单的赋值?

文档中是否有描述此行为的内容?

1 个答案:

答案 0 :(得分:0)

这是因为db.test.update({_id : 1}, {country : 1})只会将整个文档更改为country = 1,从而删除其他所有内容。

所以很可能mongo聪明告诉你:你想要更新特定的元素,同时删除所有东西(以及那个元素)用country = 1替换它。很可能这不是你想要的。所以我宁愿犯错误。

关于文档 - 我认为最好的方法是重新阅读mongodb update