更新集合的mongodb聚合

时间:2018-01-05 01:30:45

标签: node.js mongodb node-mongodb-native

聚合游标如何对已使用集合中的CRUD(删除R)操作做出反应? 例如:

db.collection('aggregate')
.aggregate([
      {$match: {}},
      {$project:
        { newField: {$literal: "new value"} }
      }
]).each(function(err, doc) {      
  // do editin inserting and removing on 'aggregate' collection    
 print(doc)
});

算法是否有可能打印在操作过程中添加或更改的记录?

1 个答案:

答案 0 :(得分:2)

  

算法是否有可能打印添加的记录或   在运作期间发生了变化?

没有。执行聚合操作时,将在集合上应用意图共享(IS)锁定,这意味着只有读取操作可以同时发生。任何创建,更新或删除操作都必须等待锁被删除,因为更新操作需要应用独占(X)锁。

参考文献:

  1. MongoDB锁定类型 - https://docs.mongodb.com/manual/faq/concurrency/#what-type-of-locking-does-mongodb-use

  2. MongoDB Tutorial - MongoDB Locks示例

  3. 聚合操作处理数据记录并返回计算结果。光标应用于计算结果。聚合后对集合的任何更改都不会影响已计算的结果。

相关问题