Update命令使用提供的Json更新密钥。我只想更新数据库中不存在的对象和更改的值。我该怎么办?
"data" : [
{
"_id" : "5bb6253d861d057857ec3ff0",
"name" : "C"
},
{
"_id" : "5bb625fc861d057857ec3ff1",
"name" : "B"
},
{
"_id" : "5bb625fe861d057857ec3ff2",
"name" : "A"
}
]
我的数据是这样的。因此,如果只有2个新对象的json中有一个数组对象,则它应将2个数据与3个数据一起插入。
答案 0 :(得分:0)
更新数据库中不存在的对象:
使用upsert:当没有文档符合查询条件时,Upsert将创建一个新文档。或者,您可以在查询中添加空值检查,例如{user_id:null}。这将允许更新数据库中不存在用户记录的数据。
更新更改的值:
可以通过维护密钥来存储last_updated_at来实现。如果last_updated_at值与以前的updatede_at不匹配,则可以修改该记录
答案 1 :(得分:0)
您可以实现MongoDB 3.6中引入的变更流,您可以从中接收数据的实时变更。您只能接收通过“更新”操作过滤的已更改数据。此外,您还可以通过“插入”操作过滤新插入的数据。请参阅Change Streams。