【问题标题】:How to update the records in collection by few conditions in mongodb?如何通过MongoDB中的几个条件更新集合中的记录?
【发布时间】:2020-09-25 14:26:13
【问题描述】:
{  
   "_id" : 1,
   "grades" : [
      { "grade" : [90], "mean" : 75, "std" : 5 },
      { "grade" : [], "mean" : 100, "std" : 4 },
      { "grade" : [], "mean" : 100, "std" : 5 }
   ]
}
{
   "_id" : 2,
   "grades" : [
      { "grade" : [3,4,5,6], "mean" : 100, "std" : 5 },
      { "grade" : [], "mean" : 100, "std" : 3 },
      { "grade" : [g,a,s,e,f], "mean" : 100, "std" : 4 }
   ]
}

假设上面的例子在集合“Project”下,我需要编写一个Mongodb查询来更新“std”,只为“grade”数组不为空的记录。

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework


    【解决方案1】:

    使用$[]$set,您可以更新数组的特定元素。 (见doc

    为了匹配非空数组,我使用$not: { $eq: [] }

    db.collection.update({},
    {
      $set: {
        "grades.$[elem].std": "VALUE"
      }
    },
    {
      arrayFilters: [
        {
          "elem.grade": {
            $not: {
              $eq: []
            }
          }
        }
      ],
      multi: true
    })
    

    试试看here

    【讨论】:

    • 这只会更新每个文档中的第一个匹配元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多