2016-11-15 24 views
0

kann jemand helfen bitte Ich möchte Mongo abzufragen, um die Anordnung zu entspannen, und ich bin mit mongdb nativen Treiber Meine Sammlung Dokument folgen wird, auch ignorieren Sie bitte meine objectId seine nur für ProbeReturn Array von Feldern aus Subdokument

{ 
     "_id":ObjectId(123), 
     "name":"Sam", 
     "age":20, 
     "hobbiesDetail":[ 
     { 
      "description":"FootBall", 
      "level":"20%" 
     }, 
     { 
      "description":"Cricket", 
      "level":"80%" 
     } 
     ] 
    }, 
    { 
     "_id":ObjectId(124), 
     "name":"Ted", 
     "age":26, 
     "hobbiesDetail":[ 
     { 
      "description":"FootBall", 
      "level":"20%" 
     } 
     ] 
    } 

und meine erwartete Ausgabe ist

[ 
    { 
     "name":"Sam", 
     "age":20, 
     "hobbies":"Football,Cricket" 
    }, 
    { 
     "name":"Ted", 
     "age":26, 
     "hobbies":"Football" 
    } 
] 

ich möchte nur meine Array entspannen und ein Komma zwischen Hobby Beschreibung in einer Abfrage, Thanx für jede Hilfe

+0

ich nicht Ihre erwartete Ausgabe mag, wie etwa '[{ 'name': 'Sam', 'Alter': 20, 'Hobbys': [ 'Fußball', 'Cricket']}]'? – styvane

+0

Nein, ich kann nicht, weil ich will, dass dies in Excel zu konvertieren, In Excel gibt es kein richtiges Ergebnis für Arrays –

+0

Ich schlage vor, Sie "Hobbies" als Array zurückgeben und die verbleibende Arbeit Client-Seite. – styvane

Antwort

0

hinzufügen Alles, was Sie brauchen, ist ein $project Ion mit dem $map Array-Operator.

db.collection.aggregate([ 
    { "$project": { 
     "name": 1, 
     "age": 1, 
     "hobbies": { 
      "$map": { 
       "input": "$hobbiesDetail", 
       "as": "hobby", 
       "in": "$$hobby.description" 
      } 
     } 
    }} 
]) 
+0

Warum meine Hobbys an der Spitze [{'Hobbies': ['Football', 'Cricket'] 'Name': 'Sam', 'Alter': 20}] –

+0

ich will es endlich –

+0

Dafür muss ich eine andere Projektionsstufe hinzufügen? –