0
的一些领域我的文档这样一个集合:猫鼬更新只是一个数组
{
'email': '[email protected]',
'calls':[
{
'day' : {'mm':9, 'dd':4},
'value' : "AA"
},
{
'day' : {'mm':9, 'dd':3},
'value' : "BB"
},
{
'day' : {'mm':9, 'dd':2},
'value' : "CC"
}
]
}
如何更新与猫鼬选定一天只值是多少? 我需要这样的东西:
更新天2/9和3/9值与XX和YY
Users.findOneAndUpdate(
{
'email' : '[email protected]',
'calls.day.mm' : 9,
'calls.day.dd' : {$in:[2, 3]}
},
{
'calls.$0.mm' : "XX",
'calls.$1.mm' : "YY"
});
结果应该是:
{
'email': '[email protected]',
'calls':[
{
'day' : {'mm':9, 'dd':4},
'value' : "AA"
},
{
'day' : {'mm':9, 'dd':3},
'value' : "YY"
},
{
'day' : {'mm':9, 'dd':2},
'value' : "XX"
}
]
}
对不起,我编辑了我的问题。是关于“更新”而不是预测 – DeLac
可能是错误的,但我不认为这是可能的。因为mongo findAndModify应用query..find文档,然后设置您指定的属性。在你的情况下,你做智能更新,如'值匹配2设置为X和值匹配3设置为Y',mongo不关心这个..它只会更新你设置...我会建议运行find ..更新你所需要的并保存文件。 –
所以我应该'查找({'email':'[email protected]'})'用户,扫描所有的'user.calls.day.dd',并为他们每个人,检查它是否= = 2 || == 3'。然后修改调用,并在最后执行'user.save()'。对? – DeLac