2016-07-21 14 views
0

Ich habe das folgen Beispiel Json:Projektionsfeld in mongodb für ein anderes Feld

{ 
    "status": "1", 
    "instancia": "1", 
    "infoAdicionais": { 
     "partes": [{ 
      "id": "123" 
     }] 
    } 
} 

ich einige Modus setzen wollen de partes Array aus Objekt, somelike dies:

{ 
    "status": "1", 
    "instancia": "1", 
    "partes": [{ 
      "id": "123" 
    }] 
} 

finden Befehl funktioniert? Ich benutze mongodb 2.0, Aggregatfunktion ist dafür nicht verfügbar.

Dank

Antwort

0

Es scheint, dass diese mongodb blog post, Aggregation Rahmen auf mongodb 2.2 einschließlich $project zur Verfügung steht.

Im folgenden wird:

  • $project alle Felder aber infoAdicionals & eine neue mit $infoAdicionais.partes

In Mongo 2.2 Abfrage erstellen ist:

db.runCommand({ 
    aggregate: "device", 
    pipeline: [{ 
    $project: { 
     "status": 1, 
     "instancia": 1, 
     "partes": "$infoAdicionais.partes" 
    } 
    }] 
}); 

In Mongo 2.6+ Abfrage ist:

db.device.aggregate([{ 
    $project: { 
    "status": 1, 
    "instancia": 1, 
    "partes": "$infoAdicionais.partes" 
    } 
}]) 

In Mongo 2.0.0 ich jedes Element mit einem Cursor durchlaufen, fügen Sie eine Eigenschaft & andere entfernen:

var cursor = db.device.find(); 

while(cursor.hasNext()){ 
    var item = cursor.next(); 
    item.partes=item.infoAdicionais.partes; 
    delete item['infoAdicionais']; 
    printjsononeline(item); 
} 
+0

Leider Kerl, ist die Version 2.0 – LukasMP

+0

ich meinen Beitrag mit einem Satz aktualisiert haben, um Iteriere jedes Element, um das Äquivalent "$ project" auszuführen –

Verwandte Themen