0

2 つの BSON ドキュメントをマージする最も効率的で簡単な方法を探しています。衝突の場合、私はすでにハンドラを持っています.

ただし、BSONDocument の不変の性質により、それを使用して何かを行うことはほとんど不可能です。マージを行う最も簡単で最速の方法は何ですか?

たとえば、次のものをマージする必要があります。

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

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

最終的なドキュメントは次のようになります。

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

BSONDocument.add にはメソッドがありますが、一意性はチェックされません。これは、ルート キーとして「2013」を含む 2 つの BSON ドキュメントが最後にあることを意味します。

ありがとうございました!

4

1 に答える 1

0

お問い合わせの内容が理解できましたら、複合 ID を使用してフィールド データを集計しようとされています。MongoDB には、かなり洗練された集計フレームワークがあります。そのフレームワークの一部は、$group パイプライン集計キーワードです。これにより、例のようにフィールドまたはドキュメントとして定義できるグループ化する _id を指定したり、$sum などのアキュムレータを使用して集計を実行したりできます。

これは、おそらく使用する必要があるオペレーターのマニュアルへのリンクです。 http://docs.mongodb.org/manual/reference/operator/aggregation/group/

また、混乱を避けるため、元のお問い合わせから「merge」タグを削除してください。多くの MongoDB ドライバーには、2 つの BsonDocument を 1 つの BsonDocument に線形または要素の上書きによって統合する方法として、BsonDocument 表現の一部として Merge 関数が含まれており、集約とは関係ありません。

お役に立てれば。

nd

于 2014-01-16T17:41:37.050 に答える