sql >> データベース >  >> NoSQL >> MongoDB

dbrefフィールドによるMongodbグループ

    マニュアルには、他のさまざまなBSONタイプとともに、DBRefが集約フレームワークではサポートされていないことを明示的に示したセクションがありました。

    このgoogleグループアーカイブ に示されているように読み取られた古いパッセージ メッセージ:

    それはまだどこかにあるかもしれませんが、私は今それを見つけることができないようです:)

    また、そのメッセージスレッドでは、これが集約フレームワークでサポートされていないことを除けば、他のオプション(および集約の唯一の実際のオプション)は、 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の使用をやめ、「コレクション」および「データベース」情報を埋め込むか、アプリケーションスキーマにそのようなものの外部定義に依存する「手動参照」の代替形式を定義することをお勧めします。あなたのニーズに。そこで同じルールに従う限り、有効なプロパティ名を持つものすべてに集計フレームワークを使用できます。




    1. MongoDBのMongoShellを使用して、文字列を日付またはISODateに変換します

    2. マングースクエリはnullを返します

    3. オブジェクトIDが期待どおりに機能していないことを比較するための$lookupでのmongodb$match操作

    4. NodeJS + Express+Mongoセッションストレージ