我知道我们可以用mongodb批量更新文件
db.collection.update( criteria, objNew, upsert, multi )
Run Code Online (Sandbox Code Playgroud)
在一个db调用中,但它是同类的,即所有受影响的文档都遵循一种标准.但我想做的就是这样
db.collection.update([{criteria1, objNew1}, {criteria2, objNew2}, ...]
Run Code Online (Sandbox Code Playgroud)
,发送多个更新请求,可以在单个db调用中更新可能完全不同的文档或文档类.
我想在我的应用程序中做的是插入/更新一堆具有复合主键的对象,如果该键已经存在,则更新它; 否则插入它.
我可以在mongodb的一个组合中完成所有这些吗?
这是两个单独的问题.到第一个; 没有MongoDB本机机制来批量发送条件/更新对,尽管技术上在循环中自己这样做必然与任何本机批量支持一样高效.
检查是否存在基于嵌入文档的文档(您称之为复合键,但为了避免混淆,为了避免混淆,最好在这种情况下使用mongo名称)并根据该存在插入/更新检查可以使用upsert完成:
文件A:
{
_id: ObjectId(...),
key: {
name: "Will",
age: 20
}
}
db.users.update({name:"Will", age:20}, {$set:{age: 21}}), true, false)
Run Code Online (Sandbox Code Playgroud)
此upsert(如果没有文档符合条件,则使用insert进行更新)将根据文档A的存在执行以下两项操作之一:
希望有所帮助
归档时间: |
|
查看次数: |
9299 次 |
最近记录: |