我有以下mongoDB文档:
{
"_id" : "5b76c3c037548390fdb5b40e",
"userId" : "4601",
"news" : [
{
"newsId" : "1",
"progress" : "0",
},
{
"newsId" : "2",
"progress" : "100",
},
{
"newsId" : "3",
"progress" : "45",
},
],
"modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
"created" : ISODate("2018-08-21T19:13:43.301+05:30"),
"completionStatus" : "0",
},
{
"_id" : "5b76c3c037548390fdb5b40e",
"userId" : "1234",
"news" : [
{
"newsId" : "2",
"progress" : "100",
},
{
"newsId" : "3",
"progress" : "100",
},
],
"modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
"created" : ISODate("2018-08-21T19:13:43.301+05:30"),
"completionStatus" : "0",
}
news数组可以包含n个JSON。一个数组的一个用户数为3,其他数组为2。
现在,我要根据以下条件将 completionStatus 更新为1:
条件1:文档的修改日期为今天。已经有一个修改键。
条件2:新闻数组的每个元素的进度为100。
答案 0 :(得分:1)
这应该有效:
collection.update({
modified: {
$gte: startOfDay,
$lte: endOfDay
},
news: {
$not: {
$elemMatch: {
progress: {
$ne: "100"
}
}
}
}
}, {
$set: {
completionStatus: "1"
}
});