我的数据库设计是这样的,并且想要更新日期大于"2020-02-02T00:00:00.000Z"
日期且小于日期的所有那些对象"2020-02-04T00:00:00.000Z"
。我正在使用,$elemMatch
但无法正常工作。请帮忙。
{
"_id" : ObjectId("5e6a8b9cc71c679e92b6d4b6"),
"employee_id" : ObjectId("5e67dce79b12c80c18240f37"),
"__v" : 0,
"attandence_array" : [
{
"stay_hour" : 0,
"is_on_leave" : false
"date" : "2020-02-01T00:12:00.000Z"
},
{
"stay_hour" : 0,
"is_on_leave" : false
"date" : "2020-02-02T00:00:00.000Z"
},
{
"stay_hour" : 0,
"is_on_leave" : false,
"date" : "2020-02-03T00:00:00.000Z"
},
{
"stay_hour" : 0,
"is_on_leave" : false,
"date" : "2020-02-04T00:00:00.000Z"
},
{
"stay_hour" : 0,
"is_on_leave" : false,
"date" : "2020-02-05T00:00:00.000Z"
}
]
}
像这样的输出
{
"_id" : ObjectId("5e6a8b9cc71c679e92b6d4b6"),
"employee_id" : ObjectId("5e67dce79b12c80c18240f37"),
"__v" : 0,
"attandence_array" : [
{
"stay_hour" : 0,
"is_on_leave" : false
"date" : "2020-02-01T00:12:00.000Z"
},
{
"stay_hour" : 0,
"is_on_leave" : true
"date" : "2020-02-02T00:00:00.000Z"
},
{
"stay_hour" : 0,
"is_on_leave" : true
"date" : "2020-02-03T00:00:00.000Z"
},
{
"stay_hour" : 0,
"is_on_leave" : true
"date" : "2020-02-04T00:00:00.000Z"
},
{
"stay_hour" : 0,
"is_on_leave" : false,
"date" : "2020-02-05T00:00:00.000Z"
}
]
}
您可以使用arrayFilters:
Model.update(
{ "_id" : ObjectId("5e6a8b9cc71c679e92b6d4b6") },
{ $set: { "attandence_array.$[at].is_on_leave": true } },
{ arrayFilters: [ { "at.date": { $gt: "2020-02-02T00:00:00.000Z", $lt: "2020-02-04T00:00:00.000Z" } } ] })
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句