繁体   English   中英

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

[英]How to push an existing sub-document into an embedded array in MongoDB?

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

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

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

当从应用程序逻辑发出更新操作时,我想将data字段$pushhistory数组中,并将其替换为实体的新状态。 我在 MongoDB 文档上找不到任何关于此的信息,而且我在SO发现的每个问题都涉及将全新对象推送到数组中,而不是“移动”现有字段的值。 是否可以在这样的$push操作中引用文档字段?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM