在传递 mongoDB 聚合管道时并发/锁定如何在文档上工作

Roh*_*tel 5 mongodb aggregation-framework spring-data-mongodb

考虑我们有两个集合coll1coll2。我正在对 coll1 应用一些聚合阶段

db.coll1.aggregate([
       { $match: { ... } },
       { $lookup:{
           from: "coll2",
           localField: "_id",
           foreignField: "_id",
           as: "coll2"
         }
       }
      // followed by other stages
       //last stage being $merge
        { $merge : { into: "coll3", on: "_id"} }
    ])
Run Code Online (Sandbox Code Playgroud)

所以,我的查询是:

  1. 当聚合正在进行时,在这种情况下是否允许coll1修改/更新底层集合?无论哪种情况,请帮助理解它是如何工作的(浏览过 mongoDb 文档,但无法理解)
  2. 最后怎么写coll3?从某种意义上说,它是在完成管道时一次性写入所有内容还是在一份文档中写入所有内容?
  3. 关于spring-data-mongodb,我成功地能够调用 mongoOperation.aggregate()上述聚合管道,但它返回aggregationResult带有 Zero 的对象mappedResults。(在数据库中检查时,正在创建 coll3 )。不$merge返回任何此类详细信息?

我正在使用 mongoDb 4.2