您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mongoengine教程(3)数据查询

2024/11/25 2:49:15发布24次查看
与django一样,document类都有一个 objects 属性。它用于将类与数据库关联起来。objects属性是一个querysetmanager类型的对象,它的操作会返回一个queryset类型的对象。可以通过对queryset对象的迭代获取数据库中的数据。 class user(document): name = stri
与django一样,document类都有一个 objects 属性。它用于将类与数据库关联起来。objects属性是一个querysetmanager类型的对象,它的操作会返回一个queryset类型的对象。可以通过对queryset对象的迭代获取数据库中的数据。
class user(document): name = stringfield() country = stringfield()class paper(document): content = stringfield() author = referencefield(user)
查询过滤可以在查询是指定过滤条件以获取想要的结果。例如想要查询英国的用户:
uk_users = user.objects(country='uk')
与django类似,要查询引用的对象只需要使用双下划线即可。例如想要查询英国用户的论文:
uk_papers = paper.objects(author__country='uk')
查询操作与django类似,mongoengine同样也提供了一些条件语句。
ne – 不相等lt – 小于lte – 小于等于gt – 大于gte – 大于等于not – 取反in – 值在列表中nin – 值不在列表中mod – 取模all – 与列表的值相同size – 数组的大小exists – 字段的值存在例如查询年龄小于等于18岁的用户:
young_users = users.objects(age__lte=18)
对于不同类型的数据提供了不同的条件语句。
查询结果个数限制跟传统的orm一样,mongoengine也可以限制查询结果的个数。一种方法是在queryset对象上调用limit和skip方法;另一种方法是使用数组的分片的语法。例如:
users = user.objects[10:15]users = user.objects.skip(10).limit(5)
聚合操作mongoengine提供了一些数据库的聚合操作。
统计结果个数即可以使用queryset的count方法,也可以使用python风格的方法:
num_users = len(user.objects)num_users = user.objects.count()
其他的一些聚合操作。
求和:
yearly_expense = employee.objects.sum('salary')
求平均数:
mean_age = user.objects.average('age')
高级查询有时需要将多个条件进行组合,前面提到的方法就不能满足需求了。这时可以使用mongoengine的q类。它可以将多个查询条件进行 &(与) 和 |(或) 操作。
例如下面的语句是查询所有年龄大于等于18岁的英国用户,或者所有年龄大于等于20岁的用户。
user.objects((q(country='uk') & q(age__gte=18)) | q(age__gte=20))
在服务器端执行javascript代码通过mongoengine queryset对象的 exec_js 方法可以将javascript代码作为字符串发送给服务器端执行,然后返回执行的结果。
例如查询该数据库都有那些集合:
user.objects.exec_js(db.getcollectionnames())
原文地址:mongoengine教程(3)——数据查询, 感谢原作者分享。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product