gpt4 book ai didi

mongodb - 基于日期查询的嵌套数组更新可能无法正常工作(或者我做错了某事..)

转载 作者:可可西里 更新时间:2023-11-01 10:36:27 28 4
gpt4 key购买 nike

创建集合“test”,并向其中插入一个文档:

   {
"_id" : NumberLong(1),
"pointsBalances" : [
{
"period" : "2020",
"startDate" : ISODate("2020-01-01T00:00:00.000Z"),
"endDate" : ISODate("2020-12-31T23:59:59.999Z"),
"value" : 0
},
{
"period" : "2019",
"startDate" : ISODate("2019-01-01T00:00:00.000Z"),
"endDate" : ISODate("2019-12-31T23:59:59.999Z"),
"value" : 0
}
]
}

然后请执行更新 - 它应该可以正常工作:

db.getCollection('test').update(
{$and: [ {'_id': 1}, {"pointsBalances.period": '2019'}]},
{$set: { "pointsBalances.$.value": 100 } }
)

现在让我们尝试根据日期更新:

   db.getCollection('test').update(
{ $and: [
{'_id': 1},
{"pointsBalances.startDate": {$lte: ISODate("2019-05-01T00:00:00.000Z")}},
{"pointsBalances.endDate": {$gte: ISODate("2019-05-01T00:00:00.000Z")}}
]},
{$set: { "pointsBalances.$.value": 200 } })

似乎更新了错误的元素

最佳答案

MongoDB更新第一个符合条件的文档,尝试elemMatch

 db.michel.update(
{ $and: [
{'_id': 1},
{"pointsBalances" : {
"$elemMatch" : { $and: [

{"startDate": {$lte: ISODate("2019-05-01T00:00:00.000Z")}},
{"endDate": {$gte: ISODate("2019-05-01T00:00:00.000Z")}}

]}}}]},
{$set: { "pointsBalances.$.value": 200 } });

关于mongodb - 基于日期查询的嵌套数组更新可能无法正常工作(或者我做错了某事..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56374623/

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