2013-01-22 7 views
6

Auf der Kommandozeile, das funktioniert:Wie verwende ich Pymongo, um eine Verbindung zu einer vorhandenen Dokumentensammlung/db herzustellen?

$ mongo 
> show dbs 
mydatabase 1.0GB 

Dies ist jedoch nicht:

http://api.mongodb.org/python/current/tutorial.html

aber nicht verstehen, wie:

$ python  
>>> import pymongo 
>>> connection = pymongo.MongoClient() 
>>> connection.mydatabase.find() 

ich durch docs hier lesen zu entweder ...

  1. Verbindung zu einer vorhandenen Datenbank (mit Pymongo)
  2. Abfrage, welche Datenbanken in der Mongodb-Verbindung vorhanden sind.

Warum kann ich nicht auf meine Datenbank zugreifen?

+1

Huh, jemand dieses Q vor kurzem stieß ich nicht einmal daran erinnern, zu fragen. Dies war anscheinend meine erste Mongo-Frage. Ich mache jetzt genau das eine Milliarde Mal am Tag, ohne es zu bemerken, auf einmal habe ich es nicht verstanden ... – Mittenchops

Antwort

1

show dbs und find() sind völlig unterschiedliche Befehle als solche können Sie die beiden nicht vergleichen.

connection.mydatabase.find() 

Wird eigentlich nichts tun, da kann man nicht find() Dokumente auf Datenbankebene. Sie sind wahrscheinlich der Suche nach:

cursor = connection.mydatabase.mycol.find() 

Ich bin kein Python-Programmierer, aber so ähnlich und die foreach die cursor var Ihre Daten zu erhalten.

Als eine zusätzliche Notiz möchten Sie mycol durch den Sammlungsnamen ersetzen, der Ihre Dokumente enthält.

Was für eine Liste von Datenbanken abfragen Sie so etwas wie tun:

databases = connection.mydatabase.command({'listDatabases': 1}); 

Wie hier gezeigt: http://docs.mongodb.org/manual/reference/command/listDatabases/#listDatabases

jedoch wieder bin ich kein Python-Programmierer, aber dies sollte Ihnen den Einstieg.

2

Auf der Python-Befehlszeile ein:

import pymongo 
from pymongo import MongoClient 
connection = MongoClient() ## connects by default to db at localhost:27017 
connection.database_names() ## python binding equivalent to show dbs. 

Obwohl es nicht eine Fülle von Beispielen zu sein scheint, scheint es, dass die Bindungen innerhalb der Python Driver API Documentation ziemlich vollständig sind.