如何使用 PyMongo 在 MongoDB 中创建新数据库?

65

我能否只是连接到 MongoDB 服务器就创建一个新的数据库,还是有其他使用 Python 创建它的方式?如果有,该如何实现?

4个回答

105

MongoDB会自动为您创建数据库和集合,如果它们不存在的话。

要在Python中使用MongoDB库,请查看这个文档

警告: 此示例基于Pymongo 2.1。 如果您正在使用Pymongo 3.4,请检查此文档

from pymongo import Connection
connection = Connection()
db = connection['test-database']
collection = db['test-collection']

所以你可以使用任何名称作为数据库和集合的名称。


43
重要提示:仅当您尝试写入文档时,数据库和集合才会被创建。这对于大多数应用程序已经足够,但知道这一点是很好的。 - jrullmann
3
我刚刚读到 Connection 类已被弃用,应该使用 MongoClient 代替:https://dev59.com/SWYr5IYBdhLWcg3wFGdS - jersey bean
1
此答案已不再最新,请参考以下链接提供的答案:https://dev59.com/62oy5IYBdhLWcg3wa9Uj#42039275 - Eduardo Pignatelli

32

这是Mongodb 3.4版本:

from pymongo import MongoClient
client = MongoClient()
db = client.primer
coll = db.dataset

只有在尝试编写文档时,数据库和集合才会被创建。

文档:Python驱动程序(PyMongo)


1
点赞指定Pymongo版本的做法 :)!从2.1版本(如上所示)到3.4版本,Pymongo的工作方式完全不同。 - ivanleoncz

3

针对 pymongo==4.3.3 版本:

from pymongo import MongoClient

client = MongoClient()
print(client.list_database_names())
db = client["new_db"]
collection = db["new_collection"]
print( db.list_collection_names())

只有在尝试写入文档时,数据库和集合才会被创建。


1

需要创建一个集合,而不插入文档,以便能够先设置验证器。

幸运的是,pymongo数据库对象定义了create_collection方法:

create_collection(name, codec_options=None, read_preference=None, write_concern=None, read_concern=None, session=None, **kwargs)

在此数据库中创建新的集合。

通常情况下,集合的创建是自动完成的。仅应使用此方法来指定创建选项。如果集合已经存在,则会引发CollectionInvalid异常。

...

从版本3.11开始更改:现在支持MongoDB 4.4+中的多文档事务内部使用此方法。

从版本3.6开始更改:添加了session参数。

从版本3.4开始更改:添加了collation选项。

从版本3.0开始更改:添加了codec_options、read_preference和write_concern选项。

从版本2.2开始更改:删除了已弃用的参数:options


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接