首页 > 解决方案 > 在 mongodb 中执行更新操作时“或”中每个条件的结果

问题描述

Collection Name:- col
{ 
_id : ObjectId(".....1")
sid : "100"
name: "aaaa"
activity: "open"
}

{
_id : ObjectId(".....2")
sid : "100"
name: "bbbb"
activity: "open"
}

{
_id : ObjectId(".....3")
sid : "200"
name: "cccc"
activity: "close"
}

假设,我必须像这样更新集合:-

db.col.update(
 {$or: [ {"sid" : "100"},
         {"sid" : "100"},   # Redundant
         {"sid" : "400"},   # Not in collection
         {"sid" : "100", "name" : "aaaa"}   # Redundant
      ]},
 {$set: {"activity": "close"}}, {multi: true}
)

这将返回我 WriteResult({"nMatched" : 2, "nUpserted": 0, "nModified": 2})

我想得到这样的结果:-

WriteResult({"nMatched" : 2, "nUpserted": 0, "nModified": 2})  # For 1st condition
WriteResult({"nMatched" : 2, "nUpserted": 0, "nModified": 0})  # For 2nd condition
WriteResult({"nMatched" : 0, "nUpserted": 0, "nModified": 0})  # For 3rd condition
WriteResult({"nMatched" : 1, "nUpserted": 0, "nModified": 0})  # For 4th condition

我能得到这样的结果吗?我尝试在更新后使用聚合管道,但我无法获得冗余条件结果和“不在集合中”条件结果。有什么办法可以得到类似于上述结果的结果吗?

标签: databasemongodbcollections

解决方案


推荐阅读