[TOC]
python操作mongodb
连接mongodb
1 | #!/usr/bin/env python |
插入数据
查询数据
https://www.runoob.com/python3/python-mongodb-query-document.html
查询一条数据
我们可以使用 find_one() 方法来查询集合中的一条数据。
1 | #!/usr/bin/python3 |
查询集合中所有数据
find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。
以下实例查找 sites 集合中的所有数据:
1 | #!/usr/bin/python3 |
$exists查找字段是否存在
判断字段是否存在
1 | db.users.find({age: {"$exists": True}}); |
$or
1 | { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] } |
1 | db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } ) |
$ne不等于
查询x 的值不等于3 的数据
1 | query = {Problem.DATA_STATUS: {"$ne": StateValue.FILE_SUCCESS}} |
举例如下:
C1 表的数据如下:
1 | > db.c1.find() |
查询age 的值不等于7 的数据
1 | > db.c1.find( { age : { $ne : 7 } } ); |
可以看出只显示出了age 不等于7 的数据,其它不符合规则的数据并没有显示出来
在users文档中查询”age”不等于20的记录:
1 | db.users.find({age:{$ne:20}}); |
高级查询
查询的条件语句中,我们还可以使用修饰符。
以下实例用于读取 name 字段中第一个字母 ASCII 值大于 “H” 的数据,大于的修饰符条件为 {“$gt”: “H”} :
1 | #!/usr/bin/python3 |
使用正则表达式查询
我们还可以使用正则表达式作为修饰符。
正则表达式修饰符只用于搜索字符串的字段。
以下实例用于读取 name 字段中第一个字母为 “R” 的数据,正则表达式修饰符条件为 {“$regex”: “^R”} :
1 | #!/usr/bin/python3 |
返回指定条数记录
如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。
计数count
1 | problem_table.count_documents(query) |
1 | query = {"id": {"$regex": "^" + tag_dict[name]}} |
查询值为Null或不存在的字段
The { name : null }
query matches documents that either contain the name
field whose value is null
or that do not contain the name
field.
给出如下查询:
1 | db.users.find( { name: null } ) |
更新数据
https://www.runoob.com/python3/python-mongodb-update-document.html
1 | import pymongo |
删除字段
1 | db.yourcollection.update_one({}, {"$unset": {"name": ""}}) |
1 | db.yourcollection.update_many({}, {"$unset": {"name": ""}}) |
添加字段
直接使用update即可
1 | test_collection.update_one({"id":"test1"}, {"$set": {"new_field": "xxx"}}) |
删除数据
排序
sort() 方法可以指定升序或降序排序。
sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。
对字段 alexa 按升序排序:
1 | #!/usr/bin/python3 |