Mongodb更新并删除不再存在的字段

k10s72fa  于 2023-03-01  发布在  Go
关注(0)|答案(1)|浏览(147)

有一份文件,即

{
  "_id": {
    "$oid": "63ee577ca5340cd594916852"
  },
  "id": 12345,
  "price": 123,
  "oldprice": 456
}

我正在使用执行更新

db.testupd.updateOne({'id': 12345}, [{'$set': {"id": 12345, "price": 222}}], upsert=true)

它的工作,但“oldprice”字段仍然存在更新后,我需要的是删除不再存在的字段,因为不幸的是,数据源不一致。我该如何实现这一点?

cgh8pdjw

cgh8pdjw1#

如果不想保留的字段列表未知,则可以在$merge中使用replace。您可以使用$project仅保留所需的字段。

db.collection.aggregate([
  {
    $match: {
      "id": 12345
    }
  },
  {
    "$set": {
      "id": 12345,
      "price": 222
    }
  },
  {
    $project: {
      id: 1,
      price: 1
    }
  },
  {
    "$merge": {
      "into": "collection",
      "on": "_id",
      "whenMatched": "replace"
    }
  }
])

Mongo Playgroud

相关问题