マニュアルには、他のさまざまなBSONタイプとともに、DBRefが集約フレームワークではサポートされていないことを明示的に示したセクションがありました。
この
それはまだどこかにあるかもしれませんが、私は今それを見つけることができないようです:)
また、そのメッセージスレッドでは、これが集約フレームワークでサポートされていないことを除けば、他のオプション(および集約の唯一の実際のオプション)は、 mapReduce 代わりにメソッド。シェルの例として:
db.Products.mapReduce(
function() {
emit( this.model.$id, { "actives": [this.isActive] } );
},
function(key,values) {
var result = { "actives": [] };
values.forEach(function(value) {
value.actives.forEach(function(active) {
result.actives.push( active );
});
});
},
{ "out": { "inline": 1 } }
)
{ "_id": "", "value": { } }
が任意であるため、見栄えがよくありません。 mapReduceの結果の構造ですが、探している種類の集計が可能です。
このJIRAの問題への参照もあります: SERVER-14466 、しかし私はその前線で多くの動きを我慢しませんでした。
したがって、mapReduceを使用できますが、DBRefの使用をやめ、「コレクション」および「データベース」情報を埋め込むか、アプリケーションスキーマにそのようなものの外部定義に依存する「手動参照」の代替形式を定義することをお勧めします。あなたのニーズに。そこで同じルールに従う限り、有効なプロパティ名を持つものすべてに集計フレームワークを使用できます。