简体   繁体   中英

How do I use pymongo to connect to an existing document collection/db?

On the command line, this works:

$ mongo
> show dbs
mydatabase   1.0GB

However, this does not:

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

I read through docs here:

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

But do not understand how to either...

  1. connect to an existing database (using pymongo)
  2. query what databases exist in the mongodb connection.

Why can't I access my database?

Connect to an existing database

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

List existing databases

import pymongo
from pymongo import MongoClient
connection = MongoClient()
# connection.database_names() # depreciated
connection.list_database_names()

show dbs and find() are totally different commands as such you cannot compare the two.

connection.mydatabase.find()

Will actually do nothing because you cannot find() documents on database level. You are probably looking for:

cursor = connection.mydatabase.mycol.find()

I am no Python programmer but something like that and the foreach the cursor var to get your data.

As an added note you will want to replace mycol with the collection name that contains your documents.

As for querying for a list of databases you can do something like:

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

As shown here: http://docs.mongodb.org/manual/reference/command/listDatabases/#listDatabases

However again I am no Python programmer but this should get you started.

On the python command line:

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.

Although there doesn't seem to be a wealth of examples, it appears that the bindings are pretty complete within the Python Driver API Documentation .

The question implies user has a local MongoDB. However I found this question trying to connect to a remote MongoDB. I think the tutorial is worth mentioning (no other answer here mentioned how I can specify the host and the port)

The above code will connect on the default host and port. We can also specify the host and port explicitly, as follows:

client = MongoClient('localhost', 27017)

Or use the MongoDB URI format:

client = MongoClient('mongodb://localhost:27017/')

database_names() is deprecated. One can use list_database_names() instead.

mongo_db_url will be something like "mongodb://localhost:27017/". 27017 is deafult port number, replace suitably.

from pymongo import MongoClient
client = MongoClient(<mongo_db_url>)
#or client = MongoClient('localhost', 27017)
client.list_database_names()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM