2016-05-03 10 views
1

Ich habe eine Sammlung „A“, die Dokumente haben:Mongodb: Wie kann man den Wert lesen, ohne den Feldnamen zu kennen?

{_id:1, a1: "degree"} 
{_id:2, a2: "score"} ... 

Ich brauche diese Sammlung Schlüssel-Wert-Struktur zu transformieren, wie:

{_id: x, {name: "a1", label: "degree"} } 
{_id: y, {name: "a2", label: "score"} } 

Problem jedes Dokumentnamen anderes Feld ist haben kann in der Sammlung A. Um den Feldnamen zu erhalten, kann ich Javascript wie folgt verwenden,
Aber immer noch nicht finden können, um jeden Feldwert zu erhalten, ohne Feldnamen zu kennen.

var arr = new Array() 
var x = 0 
var cur = db."A".find() 
while(cur.hasNext()) { 
    var i = 0 
    for(var field in cur[x]) { 
     arr[i] = field; // get field name 
     i++;} 
db."B".save({ "name": arr[1], //fieldname 
      "label": //how to put value without knowing field name? 
      ) 
    x++; 
} 

Haben Sie eine Idee, wie Sie Feldwert erhalten, ohne den Namen zu kennen?
danke.

+0

Sie meinen, 'zu {_id: x, name: "a1", Label: "Grad"}' – styvane

+0

haben Sie den Wert '_id' in die bekommen Namensfeld innerhalb der Schleife? – gypsyCoder

+0

Nein, _id ist egal was es hat .. – jelongpark

Antwort

1

Vielen Dank für Kommentare und Antworten! Ich habe meine JavaScript-Code wie folgt beendet:

var arr = new Array() 
var x = 0 
var cur = db.A.find() 
while(cur.hasNext()) { 
var i = 0 
for(var field in cur[x]) { 
    arr[i] = field; // get field name 
    print("field name="+ field); 
    print("the value="+cur[x][field]); 
    i++; 
    } 
x++; 
} 
3

Ich bin mir nicht sicher, ist das, was Sie wirklich wollen, aber hoffe diese Hilfe.

Versuchen Sie folgendes:

var obj = [ 
    {_id: x, {name: "a1", label: "degree"} }, 
    {_id: y, {name: "a2", label: "score"} } 
]; 

for (index in obj) { 
    for (key in obj[index]) { 
     console.log(key); 
     console.log(obj[index][key]); 
    } 
}