【问题标题】:Update if there is no such element如果没有这样的元素,则更新
【发布时间】:2021-04-21 09:27:27
【问题描述】:

我有一个文件

{
 videoSection:{
   title: "Social construction",
   videos: [
    {title: "a", isApproved: true},
    {title: "b", isApproved: false},
    {title: "c", isApproved: true},
   ],
   isPublished: false
 }

}

如果videoSection的视频的isApproved字段都是true,我需要更新文档(设置isPublished: true),这意味着如果没有isApproved = false

这样做的方法是什么?

【问题讨论】:

    标签: arrays mongodb mongodb-query


    【解决方案1】:

    演示 - https://mongoplayground.net/p/obReFQ3FmkV

    db.collection.update(
    {
       "videoSection.videos.isApproved": {
         $exists: true,
         $ne: false
       }
    },
    { $set: { "videoSection.isPublished": true } },
    { multi: true }
    )
    

    注意 - { $exists: true } 这为视频数组为空或不存在的情况添加了额外的检查,更新将不会发生。

    【讨论】:

    • 1 感谢您的贡献!
    【解决方案2】:
    • 如果isApproved 不为假,则检查条件,然后将isPublished 更新为真
    db.collection.updateMany({
      "videoSection.videos.isApproved": {
        $ne: false
      }
    },
    {
      $set: {
        "videoSection.isPublished": true
      }
    })
    

    Playground

    【讨论】:

      猜你喜欢
      • 2021-07-29
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多