如何使用pymongo连接到现有文档集/ db?

时间:2013-01-22 22:10:33

标签: python mongodb pymongo

在命令行中,这可以:

$ mongo
> show dbs
mydatabase   1.0GB

然而,这不是:

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

我在这里阅读了文档:

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

但不明白如何......

  1. 连接到现有数据库(使用pymongo)
  2. 查询mongodb连接中存在哪些数据库。
  3. 为什么我无法访问我的数据库?

5 个答案:

答案 0 :(得分:9)

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()

答案 1 :(得分:2)

在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.

虽然似乎没有大量的例子,但似乎Python Driver API Documentation内的绑定非常完整。

答案 2 :(得分:1)

show dbsfind()是完全不同的命令,因此您无法比较这两个命令。

connection.mydatabase.find()

实际上什么也不做,因为你不能在数据库级别上find()文档。您可能正在寻找:

cursor = connection.mydatabase.mycol.find()

我不是Python程序员,而是foreach cursor var以获取您的数据。

作为补充说明,您需要将mycol替换为包含文档的集合名称。

至于查询数据库列表,您可以执行以下操作:

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

如下所示:http://docs.mongodb.org/manual/reference/command/listDatabases/#listDatabases

然而,我不再是Python程序员,但这应该让你开始。

答案 3 :(得分:0)

该问题暗示用户具有 local MongoDB。但是我发现这个问题试图连接到远程 MongoDB。我认为tutorial is worth mentioning(此处没有其他答案提到了如何指定主机和端口)

  

以上代码将连接到默认主机和端口。我们还可以显式指定主机和端口,如下所示:

client = MongoClient('localhost', 27017)

  

或使用MongoDB URI格式:

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

答案 4 :(得分:0)

database_names()已过时。可以改用list_database_names()。

mongo_db_url将类似于“ mongodb:// localhost:27017 /”。 27017是默认端口号,请适当更换。

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