我有这样的文件集合:
{
'email': 'daniele@gmail.com',
'calls':[
{
'day' : {'mm':9, 'dd':4},
'value' : "AA"
},
{
'day' : {'mm':9, 'dd':3},
'value' : "BB"
},
{
'day' : {'mm':9, 'dd':2},
'value' : "CC"
}
]
}
如何使用Mongoose更新所选日期的值? 我需要这样的东西:
使用 XX 和 YY
更新第2/9天和第3/9天的值Users.findOneAndUpdate(
{
'email' : 'daniele@gmail.com',
'calls.day.mm' : 9,
'calls.day.dd' : {$in:[2, 3]}
},
{
'calls.$0.mm' : "XX",
'calls.$1.mm' : "YY"
});
结果应为:
{
'email': 'daniele@gmail.com',
'calls':[
{
'day' : {'mm':9, 'dd':4},
'value' : "AA"
},
{
'day' : {'mm':9, 'dd':3},
'value' : "YY"
},
{
'day' : {'mm':9, 'dd':2},
'value' : "XX"
}
]
}
答案 0 :(得分:0)
试试这个
Users.update(
{
'email': 'daniele@gmail.com',
'calls.day.mm':9,
'calls.day.dd':{
$in:[2,3]
}
},{
$set:{
"calls.1.value":"XXX",
"calls.2.value":"YYY"
}
})
答案 1 :(得分:0)
根据上述描述作为解决方案,请尝试执行以下MongoDB更新操作
db.users.update(
{
calls: {
$elemMatch: {
'day.dd': {
$in: [2, 3]
}
}
}
}, {
$set: {
'calls.$.value': 'XX'
}
}
)