2017-02-25 5 views
0

Ich habe die folgenden Eintrag in MongoDB über Preise Limonade im Sommer zu ändern, die ich durch ein Python-Skript eingefügt:Zugriff auf verschachtelte Einträge in MongoDB und Python

{ 
    "_id" : ObjectId('ffffffffffffffffff'), 
    "Drink" : "Lemonade" 
    "Prices per dates" : [ 
     { 
      "Date" : "02-22-2017", 
      "Price" : "5.00" 
     }, 
     { 
      "Date" : "02-21-2017", 
      "Price" : "6.00" 
     },    
     { 
      "Date" : "02-20-2017", 
      "Price" : "7.00" 
     } 
    ] 
} 

Ich mag würde nur die Preise und Druck extrahieren :

5.00 6.00 7.00

ich las diesen Beitrag auf Stackoverflow: Accessing Nested Objects in MongoDB

Ist i nicht möglich zu tun, was ich will? Oder habe ich die Antwort auf diese Frage falsch interpretiert?

Wenn es jedoch möglich ist, dies zu tun, wie würde ich es tun? Und gibt es eine bessere Möglichkeit, meine Datenbank zu formatieren, die meine Arbeit erleichtern würde? Es tut mir leid, wenn das eine sehr grundlegende Frage ist, ich habe vor kurzem gelernt, mit all dem zu arbeiten.

Antwort

1

Wie die verknüpfte Antwort sagt, MongoDB immer das vollständige Dokument zurückkehren, aber Sie können leicht die Preise aus, dass extrahieren:

prices = [p["Price"] for p in doc["Prices per dates"]] 

wo doc die dict aus der Datenbank zurückgegeben werden.

0

Die obige Antwort funktioniert. Für die Zukunft, das war meine letzte Lösung:

for i in [p["Price"] for p in collection.find_one({"Drink":"Lemonade"}["Prices per dates"]]: 
    print i 

Ausgang:

5.00 
6.00 
7.00 
Verwandte Themen