- Mongo引擎教程
- MongoEngine - 主页
- MongoEngine——MongoDB
- MongoEngine - MongoDB 指南针
- MongoEngine - 对象文档映射器
- MongoEngine - 安装
- MongoEngine - 连接到 MongoDB 数据库
- MongoEngine - 文档类
- MongoEngine - 动态模式
- MongoEngine - 字段
- MongoEngine - 添加/删除文档
- MongoEngine - 查询数据库
- MongoEngine - 过滤器
- MongoEngine - 查询运算符
- MongoEngine - 查询集方法
- MongoEngine - 排序
- MongoEngine - 自定义查询集
- MongoEngine - 索引
- MongoEngine - 聚合
- MongoEngine - 高级查询
- MongoEngine - 文档继承
- MongoEngine - 原子更新
- MongoEngine-Javascript
- MongoEngine-GridFS
- MongoEngine - 信号
- MongoEngine - 文本搜索
- MongoEngine - 扩展
- MongoEngine 有用资源
- MongoEngine - 快速指南
- MongoEngine - 有用的资源
- MongoEngine - 讨论
MongoEngine - 查询集方法
QuerySet 对象拥有以下用于查询数据库的有用方法。
第一的()
返回满足查询的第一个文档。以下代码将返回产品集合中价格 < 20000 的第一个文档。
qset=products.objects(price__lt=20000) doc=qset.first() print ('Name:',doc.Name, 'Price:',doc.price)
输出
Name: Router Price: 2000
排除()
这将导致提到的字段从查询集中排除。这里,Document类的to_json()方法用于获取Document的JSON化版本。ProductID 字段不会出现在结果中。
for product in products.objects.exclude('ProductID'): print (product.to_json())
输出
{"_id": {"$oid": "5c8dec275405c12e3402423c"}, "Name": "Laptop", "price": 25000} {"_id": {"$oid": "5c8dec275405c12e3402423d"}, "Name": "TV", "price": 50000} {"_id": {"$oid": "5c8dec275405c12e3402423e"}, "Name": "Router", "price": 2000} {"_id": {"$oid": "5c8dec275405c12e3402423f"}, "Name": "Scanner", "price": 5000} {"_id": {"$oid": "5c8dec275405c12e34024240"}, "Name": "Printer", "price": 12500}
字段()
使用此方法可以操作要在查询集中加载哪些字段。使用字段名称作为关键字参数,并设置为 1 表示包含,0 表示排除。
for product in products.objects.fields(ProductID=1,price=1): print (product.to_json())
输出
{"_id": {"$oid": "5c8dec275405c12e3402423c"}, "ProductID": 1, "price": 25000} {"_id": {"$oid": "5c8dec275405c12e3402423d"}, "ProductID": 2, "price": 50000} {"_id": {"$oid": "5c8dec275405c12e3402423e"}, "ProductID": 3, "price": 2000} {"_id": {"$oid": "5c8dec275405c12e3402423f"}, "ProductID": 4, "price": 5000} {"_id": {"$oid": "5c8dec275405c12e34024240"}, "ProductID": 5, "price": 12500}
在 fields() 方法中将字段关键字参数设置为 0 的工作方式与 except() 方法类似。
for product in products.objects.fields(price=0): print (product.to_json())
输出
{"_id": {"$oid": "5c8dec275405c12e3402423c"}, "ProductID": 1, "Name": "Laptop"} {"_id": {"$oid": "5c8dec275405c12e3402423d"}, "ProductID": 2, "Name": "TV"} {"_id": {"$oid": "5c8dec275405c12e3402423e"}, "ProductID": 3, "Name": "Router"} {"_id": {"$oid": "5c8dec275405c12e3402423f"}, "ProductID": 4, "Name": "Scanner"} {"_id": {"$oid": "5c8dec275405c12e34024240"}, "ProductID": 5, "Name": "Printer"}
仅有的()
该方法的效果与 fields() 方法类似。仅与关键字参数对应的字段才会出现在查询集中。
for product in products.objects.only('Name'): print (product.to_json())
输出
{"_id": {"$oid": "5c8dec275405c12e3402423c"}, "Name": "Laptop"} {"_id": {"$oid": "5c8dec275405c12e3402423d"}, "Name": "TV"} {"_id": {"$oid": "5c8dec275405c12e3402423e"}, "Name": "Router"} {"_id": {"$oid": "5c8dec275405c12e3402423f"}, "Name": "Scanner"} {"_id": {"$oid": "5c8dec275405c12e34024240"}, "Name": "Printer"}
和()
此方法计算查询集中给定字段的总和。
平均的()
该方法计算查询集中给定字段的平均值。
avg=products.objects.average('price') ttl=products.objects.sum('price') print ('sum of price field',ttl) print ('average of price field',avg)
输出
sum of price field 94500 average of price field 18900.0