2013-01-22 6 views
11

Ich habe einige Dokumente in Mongo:Ist es möglich, Felder in den Ausgaben einer Mongo-Abfrage in PyMongo umzubenennen?

{"name" : "John", "age" : 26} 
{"name" : "Paul", "age" : 34} 
{"name" : "George", "age" : 36} 

und eine andere Funktion, die Dokumente der Form erwartet:

{"name" : "XXX", "value" : YY} 

Ist es möglich, das ‚Alter‘ Feld ‚Wert‘ in einem Fund umbenennen Abfrage in PyMongo?

+1

Ich weiß, es ist nicht das, was gefragt wurde, aber warum tut es in MongoDB-abhängiger Art und Weise, wenn Sie das Feld umbenennen nach MongoDB durch einfachen Python-Code Abfrage? Sie können die Iterator-Semantik my generator expression beibehalten: return ({"name": doc ["name"], "wert": doc ["alter"]} für doc in collection.find()}) –

+0

@ MichaelKorbakov Ich würde vorschlagen, der Grund ist für die Geschwindigkeit. Mongo wird wahrscheinlich schneller beim Umbenennen von Feldern in den Daten –

Antwort

17

Ich würde die aggregate Methode mit $project Operator verwenden.

Von mongodb web docs.

Sie können auch $ project verwenden, um Felder umzubenennen. Betrachten Sie das folgende Beispiel:

db.article.aggregate(
{ $project : { 
    title : 1 , 
    page_views : "$pageViews" , 
    bar : "$other.foo" 
}});` 

z.B.

db.mycol.aggregate({ $project : { name:1, value:"$age" }}); 

siehe http://docs.mongodb.org/manual/reference/aggregation/#_S_project

+0

find(), hat auch die Projektionsmethode, aber ich fand, dass es nicht unterstützt Umbenennen – Leo

+0

(https://docs.mongodb.org/manual/reference/operator/Projektion/Position /) – Leo