¿Cómo uso pymongo para conectarme a una colección de documentos / db existente?

En la línea de comandos, esto funciona:

$ mongo > show dbs mydatabase 1.0GB 

Sin embargo, esto no:

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

Leí los documentos aquí:

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

Pero tampoco entiendo cómo …

  1. conectarse a una base de datos existente (usando pymongo)
  2. Consulte qué bases de datos existen en la conexión mongodb.

¿Por qué no puedo acceder a mi base de datos?

Conectarse a una base de datos existente

 import pymongo from pymongo import MongoClient connection = MongoClient() db = connection.mydatabase 

Lista de bases de datos existentes

 import pymongo from pymongo import MongoClient connection = MongoClient() connection.database_names() 

En la línea de comando de python:

 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. 

Aunque no parece haber una gran cantidad de ejemplos, parece que los enlaces están bastante completos dentro de la documentación de la API del controlador de Python .

show dbs y find() son comandos totalmente diferentes, por lo que no puedes comparar los dos.

 connection.mydatabase.find() 

Realmente no hará nada porque no puede find() documentos en el nivel de la base de datos. Probablemente estés buscando:

 cursor = connection.mydatabase.mycol.find() 

No soy un progtwigdor de Python, pero algo así y el foreach el cursor var para obtener sus datos.

Como nota adicional, querrá reemplazar mycol con el nombre de la colección que contiene sus documentos.

En cuanto a la consulta de una lista de bases de datos, puede hacer algo como:

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

Como se muestra aquí: http://docs.mongodb.org/manual/reference/command/listDatabases/#listDatabases

Sin embargo, de nuevo, no soy progtwigdor de Python, pero esto debería ayudarte a comenzar.