MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Obtenez le nombre de champs dans chaque document via une requête à l'aide du pilote Java MongoDB

De votre code java j'ai lu

comme

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

Avec cette hypothèse, vous pouvez map-reduce comme suit :

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} fonctionne pour les petits ensembles de données, lorsque le résultat correspond à limite de 16 Mo . Pour des réponses plus importantes, vous devez output à une collection, que vous pouvez interroger et itérer comme d'habitude.