Mongodb位置运算符不起作用

Posted

技术标签:

【中文标题】Mongodb位置运算符不起作用【英文标题】:Mongodb positional operator is not working 【发布时间】:2021-09-18 16:31:33 【问题描述】:

当我试图只更新“标题”时,它工作正常,但如果我试图更新数组中的嵌套对象,它就不起作用。

数据: Data

工作:

const restaurant = await Restaurant.update(
    _id: '60e6828e4992a2979fa0ba3e',
    $set: title: "Hello,
  );

不工作:

const restaurant = await Restaurant.update(
    _id: '60e6828e4992a2979fa0ba3e', 'grades.grade': 85,
    $set: 'grades.$.grade': 0,
  );

【问题讨论】:

请不要粘贴图片,使用格式化文本。见meta.***.com/a/285557/3027266 【参考方案1】:

演示 - https://mongoplayground.net/p/caFBz-lx8dQ

使用$[]

过滤的位置运算符 $[] 识别与更新操作的 arrayFilters 条件匹配的数组元素

db.collection.update(
 ,
  $set:  "grades.$[elem].grade": 0 ,
  arrayFilters: [ "elem.grade": 85  ]
)

【讨论】:

这有点奇怪。您的代码仍然无法在我的项目中运行。自从我使用它以来,我认为猫鼬有问题。

以上是关于Mongodb位置运算符不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb $push 运算符不起作用

插入许多在 mongoDB 中不起作用,为啥?

$push 在 MongoDb 中不起作用?

流星:mongodb更新不起作用

MongoDB自动增量不起作用

MongoDB自动增量不起作用