Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MongoEngine中的子查询_Python_Mongodb_Mongoengine_Nosql - Fatal编程技术网

Python MongoEngine中的子查询

Python MongoEngine中的子查询,python,mongodb,mongoengine,nosql,Python,Mongodb,Mongoengine,Nosql,具有示例代码: import mongoengine as mongo class User(mongo.Document): name = mongo.StringField() age = mongo.IntField() class Post(mongo.Document): title = mongo.StringField() author = mongo.ReferenceField(User) 我想获得30岁以下用户创建的所有帖子,一种

具有示例代码:

import mongoengine as mongo

class User(mongo.Document):
    name = mongo.StringField()
    age = mongo.IntField()    

class Post(mongo.Document):
    title = mongo.StringField()
    author = mongo.ReferenceField(User)
我想获得30岁以下用户创建的所有帖子,一种方法是分两步提出请求:

users = User.objects(age__lt=30)
posts = Post.objects(author__in=users)
但即使这样也不是完全糟糕,它不必要地调用和连接数据库N次。因此,我想在一个步骤中进行查询,我尝试了:

posts = Post.objects(author__age__lt=30)
但不起作用,它只是返回一个空列表,而不是一个错误。我做错了什么

。。。它不必要地调用和连接数据库N次

MongoDB支持
$in
子句,该子句允许仅通过一个查询、一个连接选择多个对象。如果您看到多个连接,您可能应该向mongoengine的作者报告

因为MongoDB不支持连接,所以“加载用户,加载他们的帖子”的方法通常是正确的

我做错了什么

对于这一级别的细节,您最好的选择是。github页面上有他的电子邮件和博客。看看回购协议,他的最后一次更新是2010年10月,最后一次版本号是0.4。三个月没有更新在这个领域是一段很长的时间,他甚至没有1.0版本,所以你很可能需要直接与作者交谈

我做错了什么

没有不能跨引用字段查询的内容-请参阅

因此,即使语法得到支持,也需要在幕后进行两次查询。如果这是我想要的东西——给github添加一张票证,我会考虑添加它:)


目前,MongoEngine的更新速度非常快,因此新版本即将发布!分支上有一些令人兴奋的改进,包括有效的延迟解引用和用于原子保存的更新增量

Ross这在MongoEngine有货吗?肯定会有用的。谢谢。没有门票,我不确定它的实施是否明智,因为它涵盖了太多的内部内容。好吧,这没什么大不了的。这不是真正的障碍,只是一种方便。谢谢