如何将现有的子文档推送到MongoDB中的嵌入式数组中?

时间:2016-12-23 06:29:08

标签: arrays mongodb

我正在尝试确定以下用例在MongoDB 3.4中是否可行:我有一个包含具有类似于此的模式的文档的集合:

{
    "_id": ObjectId("..."),
    "data": {
        "fname": "John",
        "lname": "Doe"
    },
    "history": []
}

data字段用于保存实体的当前状态,history数组用于保存最新版本(考虑最大文档大小和查询目的)

当从应用程序逻辑发出更新操作时,我希望$pushdata字段放入history数组中,并将其替换为实体的新状态。我无法在MongoDB文档中找到任何关于此的内容,我在SO找到的每个问题都涉及将一个全新的对象推送到一个数组中,而不是“移动”现有字段的值。 是否可以在$push操作中引用文档字段?

1 个答案:

答案 0 :(得分:0)

 db.collection.update({"_id": "1234"}, {"$set": {"data": {"data-value"}}}, {"$push": {"history": {"history-value"}})

你可以像这样写,它会自动将值推入历史记录,并将数据更改为当前状态。