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

MongoDB Javaドライバーを使用したクエリを通じて、各ドキュメントのフィールド数を取得します

    私が読んだあなたのJavaコードから

    として

    project only type[1..120] fields and number of such fields in the document
    

    この前提で、map-reduce を実行できます。 次のように:

    db.testcol.mapReduce(
    function(){
        value = {count:0};
        for (i = 1; i <= 120; i++) {
            key = "type" + i
            if (this.hasOwnProperty(key)) {
                value[key] = this[key];
                value.count++
           }
        }
        if (value.count > 0) {
            emit(this._id, value);
        }
    },
    function(){
        //nothing to reduce
    },
    {
        out:{inline:true}
    });
    

    out:{inline:true} 結果が 16Mb制限<に収まる場合、小さなデータセットで機能します/ a> 。より大きな応答の場合は、outputする必要があります コレクションに移動します。これは、通常どおりクエリと反復を行うことができます。




    1. マングースの多対多の参照を削除する

    2. この場合、MongoDB*クライアント*がサーバーよりも多くのメモリを使用するのはなぜですか?

    3. MongoError:不明な修飾子:ノードjsの$ pushAll

    4. mongo-go-driverでbsonをjsonに効果的に変換する方法は?