如何在mongodb中仅更新新数据或更改的值?

时间:2018-10-04 15:44:34

标签: mongodb

Update命令使用提供的Json更新密钥。我只想更新数据库中不存在的对象和更改的值。我该怎么办?

"data" : [ 
    {
        "_id" : "5bb6253d861d057857ec3ff0",
        "name" : "C"
    }, 
    {
        "_id" : "5bb625fc861d057857ec3ff1",
        "name" : "B"
    }, 
    {
        "_id" : "5bb625fe861d057857ec3ff2",
        "name" : "A"
    }
]

我的数据是这样的。因此,如果只有2个新对象的json中有一个数组对象,则它应将2个数据与3个数据一起插入。

2 个答案:

答案 0 :(得分:0)

更新数据库中不存在的对象:

使用upsert:当没有文档符合查询条件时,Upsert将创建一个新文档。或者,您可以在查询中添加空值检查,例如{user_id:null}。这将允许更新数据库中不存在用户记录的数据。

更新更改的值:

可以通过维护密钥来存储last_updated_at来实现。如果last_updated_at值与以前的updatede_at不匹配,则可以修改该记录

答案 1 :(得分:0)

您可以实现MongoDB 3.6中引入的变更流,您可以从中接收数据的实时变更。您只能接收通过“更新”操作过滤的已更改数据。此外,您还可以通过“插入”操作过滤新插入的数据。请参阅Change Streams