0

我正在寻找合并两个 BSON 文档的最有效和最简单的方法。如果发生冲突,我已经有处理程序,例如,如果两个文档都包含整数,我将总结,如果也是一个字符串,如果数组则将添加另一个的元素,等等。

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

例如,我需要合并以下内容:

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

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

最终文件将是:

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

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

谢谢!

4

1 回答 1

0

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

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

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

希望这可以帮助。

ndh

于 2014-01-16T17:41:37.050 回答