gpt4 book ai didi

mongodb - 如何使用 $elemMatch 使用 $lte 和 $gte 日期更新 mongoDB 多个对象?

转载 作者:行者123 更新时间:2023-12-04 10:24:36 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





arrayFilters in mongodb

(3 个回答)


去年关闭。




我的数据库设计是这样的,想更新所有日期大于"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" } } ] })

关于mongodb - 如何使用 $elemMatch 使用 $lte 和 $gte 日期更新 mongoDB 多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60676119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com