2013-01-22 7 views
11

Mam kilka dokumentów w Mongo:Czy możliwa jest zmiana nazw pól na wyjściach zapytania Mongo w PyMongo?

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

i inną funkcję, która oczekuje dokumenty w postaci:

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

to jest możliwe, aby zmienić nazwę „wieku” pole „value” w znalezisku zapytanie w PyMongo?

+1

wiem, że to nie to, co został poproszony, ale dlaczego to zrobić w sposób zależny od MongoDB, kiedy można zmienić nazwę pola po zapytań MongoDB pośrednictwem prostego kodu w Pythonie? Możesz nawet zachować semantyczne iteracyjne użycie generatora: return ({"name": doc ["name"], "value": doc ["age"]} for doc in collection.find()}) –

+0

@ MichaelKorbakov Sugerowałbym, że powodem jest szybkość. Mongo najprawdopodobniej będzie szybsze w zmienianiu nazw pól w danych –

Odpowiedz

17

Użyłbym metody aggregate z operatorem $project.

Z dokumentacji sieci Mongodb.

Możesz również użyć $ projekt do zmiany nazw pól. Rozważmy następujące przykład:

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

np

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

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

+0

find(), ma również metodę projekcji, ale znalazłem, że nie obsługuje ona nazwy – Leo

+0

(https://docs.mongodb.org/manual/reference/operator/projekcja/położenie /) – Leo

Powiązane problemy