使用mongoDB中的聚合为集合中的所有文档删除特定字段

时间:2020-05-17 13:15:00

标签: mongodb aggregation-framework aggregate aggregate-functions aggregation

如何使用聚合为集合中的所有记录删除特定值:

具有数据收集:

[
 {
    _id: "bmasndvhjbcw",
    name: "lucas",
    occupation: "scientist",
    present_working:true,
    age: 55,
    location: "texas"

  },
  {
    _id: "bmasndvhjbcx",
    name: "mark",
    occupation: "scientist",
    age: 45,
    present_working:false,
    location: "texas"
  },
  {
    _id: "bmasndvhjbcq",
    name: "cooper",
    occupation: "physicist",
    age: 69,
    location: "texas",
    present_working:false
  }
]

删除记录中有present_working:false的行。无需在数据库中删除数据,而应仅在聚合管道中对其进行修改

仅删除present_working:falsepresent_working:false之后的预期输出应保存在数据库中。 :

[
 {
    _id: "bmasndvhjbcw",
    name: "lucas",
    occupation: "scientist",
    present_working:true,
    age: 55,
    location: "texas"
  },
  {
    _id: "bmasndvhjbcx",
    name: "mark",
    occupation: "scientist",
    age: 45,
    location: "texas"
  },
  {
    _id: "bmasndvhjbcq",
    name: "cooper",
    occupation: "physicist",
    age: 69,
    location: "texas"
  }
]

MongoDB版本: 4.0

1 个答案:

答案 0 :(得分:2)

您可以使用$$REMOVE as part of $project

db.collection.aggregate([
    {
        $project: {
            _id: 1,
            name: 1,
            occupation: 1,
            age: 1,
            location: 1,
            present_working: { $cond: [ { $eq: [ "$present_working", false ] }, "$$REMOVE", "$present_working" ] }
        }
    }
])

Mongo Playground