reactivemongo - 合并两个BSONDocuments

时间:2013-09-16 03:00:20

标签: json scala merge bson reactivemongo

我正在寻找合并两个BSON文档的最有效和最简单的方法。在碰撞的情况下,我已经有处理程序,例如,如果两个文档都包含Integer,我将总结,如果一个字符串也是,如果数组然后将添加另一个的元素,等等。

然而,由于BSONDocument不可改变的性质,几乎不可能用它做任何事情。什么是最简单,最快速的合并方式?

我需要合并以下代码:

{
  "2013": {
   "09": {
    value: 23
   }
  }
}

{
  "2013": {
   "09": {
    value: 13
   },
   "08": {
    value: 1
   }
  }
}

最终文件将是:

{
  "2013": {
   "09": {
    value: 36
   },
   "08": {
    value: 1
   }
  }
}

BSONDocument.add中有一个方法,但它没有检查唯一性,这意味着我最终会有2个BSON文档,其中“2013”​​作为根密钥等。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我了解您的询问,您希望通过复合ID汇总字段数据。 MongoDB有一个相当光滑的聚合框架。该框架的一部分是$ group pipeline aggregate关键字。这将允许您指定和_id分组,可以将其定义为示例中的字段或文档,以及使用累加器(如$ sum)执行聚合。

以下是您可能需要使用的操作员手册的链接。 http://docs.mongodb.org/manual/reference/operator/aggregation/group/

另外,请从原始查询中删除“合并”标记,以减少混淆。许多MongoDB驱动程序包含一个Merge函数作为BsonDocument表示的一部分,作为将两个BsonDocuments线性或通过元素覆盖合并为单个BsonDocument的方法,它与聚合无关。

希望这有帮助。

NDH