MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Rufen Sie die Anzahl der Felder in jedem Dokument durch Abfrage mit dem MongoDB-Java-Treiber ab

Aus Ihrem Java-Code habe ich gelesen

als

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

Mit dieser Annahme können Sie map-reduce wie folgt:

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} funktioniert für kleine Datensätze, wenn das Ergebnis in die 16 MB-Grenze . Für größere Antworten müssen Sie output zu einer Sammlung, die Sie wie gewohnt abfragen und iterieren können.