Wie kann ich ein Array von mongodb-Objekten in Pymongo (ohne einen Cursor) zurückgeben? Kann MapReduce dies tun?

8

Ich habe eine Datenbank in Mongo eingerichtet, auf die ich mit Pymongo zugreife.

Ich möchte in der Lage sein, einen kleinen Satz von Feldern in eine Liste von Wörterbüchern zu ziehen. Also, etwas, was ich in der Mongo-Shell bekomme, wenn ich tippe ...

%Vor%

Ich hätte gerne eine Python-Anweisung wie:

%Vor%

wobei x eine Array-Struktur irgendeiner Art und nicht ein Cursor ist - das heißt, anstatt zu iterieren, wie:

%Vor%

Ist es möglich, dass ich MapReduce verwenden kann, um dies in einen Einzeiler zu bringen? Etwas wie

%Vor%

Ich beabsichtige, dieses Dataset für eine Analyse nach R auszugeben, aber ich möchte das IO in Python konzentrieren.

    
Mittenchops 26.02.2013, 15:26
quelle

2 Antworten

21

Sie müssen mapReduce nicht aufrufen, sondern den Cursor in eine Liste wie folgt umwandeln:

%Vor%

Dabei ist col das Objekt db.collection.

Aber Vorsicht mit großen / großen Ergebnis, weil alles in den Speicher geladen wird.

    
Asya Kamsky 01.03.2013, 12:24
quelle
2

Sie können mapReduce in pymongo aufrufen und die Suchabfrage als Argument übergeben. Es könnte so aussehen:

%Vor%

Über die Projektionen denke ich, dass Sie sie in der Reduce-Funktion ausführen müssten, da die Abfrage nur die Auswahlkriterien spezifiziert, wie es im Mongo-Dokumentation

    
lgomezma 26.02.2013 15:56
quelle

Tags und Links