🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 安装 ~~~ pip install pymongo ~~~ [教程][1] # 使用 ## 引入pymongo ~~~ from pymongo import MongoClient ~~~ ## 创建连接 使用MongoClient创建一个连接 ~~~ client = MongoClient() ~~~ 如果你没有特别为MongoClient指定参数,MongoClient将使用MongoDB默认参数即localhost接口和27017端口。 你可以使用一个完整的MongoDB URI来定义连接: ~~~ client = MongoClient("mongodb://mongodb0.example.net:27019") ~~~ 这个MongoClient代表了一个运行于mongodb.example.net端口号为27019的MongoDB连接。 ## 访问数据库对象 第一个你用pymongo来交互的基本类是Database,它代表了MongoDB中的数据库(database)结构。数据库保存了逻辑上相关的集合组。MongoDB将在第一次使用新的数据库的时候自动创建它。 你可以使用属性访问的方式,赋值一个数据库(例如名字为primer)给本地变量db,如下所示: ~~~ db = client.primer ~~~ 你也可以使用字典形式访问一个数据库,这会移除Python特有的命名限制,如下所示: ~~~ db = client['primer'] ~~~ ## 访问集合对象 第二个你将使用pymongo进行交互的基本类是Collection,它代表了MongoDB中的集合(collection)结构。集合(collection)保存了逻辑上相关的文档组。 你可以直接使用字典形式访问集合或者通过一个访问一个数据库对象的属性来访问集合,如下所示: ~~~ db.dataset db['dataset'] ~~~ 你也可以给一个变量进行赋值,以在其他地方使用这个集合,如下所示: ~~~ coll = db.dataset coll = db['dataset'] ~~~ ## 查询 ``` results = collection.find() results = collection.find_one() results = collection.find({'age': {'$gt': 20}}) ``` ![](https://ws1.sinaimg.cn/large/006tNc79gy1g26tqgzdrxj30u00gnjs8.jpg) 另外,还可以进行正则匹配查询。例如,查询名字以M开头的学生数据,示例如下: ~~~ results = collection.find({'name': {'$regex': '^M.*'}}) ~~~ 这里使用`$regex`来指定正则匹配,`^M.*`代表以M开头的正则表达式。 这里将一些功能符号再归类为下表。 ![](https://ws1.sinaimg.cn/large/006tNc79gy1g26trqqxh6j30u00o4wg2.jpg) ## 对结果进行排序 要指定结果集的顺序,可以通过追加`sort()`方法进行查询。给`sort()`方法传递需要排序的字段和配需类型等。 ~~~ pymongo.ASCENDING表示升序排序。 pymongo.DESCENDING表示降序排序。 ~~~ 如果要通过多个键星星排序,可以传递键的列表和以及对应的排序类型的列表。举例来说,如下操作将返回restaurants集合中所有的文档,并且先通过borough字段进行升序排序,然后在每个borough内,通过"address.zipcode"字段进行升序排序。 ~~~ import pymongo cursor = db.restaurants.find().sort([ ("borough", pymongo.ASCENDING), ("address.zipcode", pymongo.ASCENDING) ]) ~~~ > find返回的是可迭代对象 ## 删除 删除操作比较简单,直接调用`remove()`方法指定删除的条件即可,此时符合条件的所有数据均会被删除。示例如下: ~~~ result = collection.remove({'name': 'Kevin'}) print(result) ~~~ 运行结果如下: ~~~ {'ok': 1, 'n': 1} ~~~ 另外,这里依然存在两个新的推荐方法——`delete_one()`和`delete_many()`。示例如下: ~~~ result = collection.delete_one({'name': 'Kevin'}) print(result) print(result.deleted_count) result = collection.delete_many({'age': {'$lt': 25}}) print(result.deleted_count) ~~~ ## update `update_one()`方法和`update_many()`方法,用法更加严格,它们的第二个参数需要使用`$`类型操作符作为字典的键名,示例如下: ~~~ condition = {'name': 'Kevin'} student = collection.find_one(condition) student['age'] = 26 result = collection.update_one(condition, {'$set': student}) print(result) print(result.matched_count, result.modified_count) ~~~ ### update_one ``` condition = {'age': {'$gt': 20}} result = collection.update_one(condition, {'$inc': {'age': 1}}) print(result) print(result.matched_count, result.modified_count) ``` ### update_many ~~~ col.update({"_id": {"$gt": 10}}, {"$set": {"content": "aaaaaaa"}}, multi=True) 对应 db.bar.update({"_id": {"$gt": 10}}, {"$set": {"content": "xxx"}}, false,true) ~~~ ## 问题 ~~~ ubuntu14.04 解决安装pymongo报错 ImportError: cannot import name MongoClient apt-get install python-pymongo ~~~ [1]:https://www.cnblogs.com/zhouxuchen/p/5544227.html