所以基本上我有这些文件
class Tag(Document):
name = StringField()
...
class Doc(Doument):
nameTag = ReferenceField(Tag)
tags = ListField(ReferenceField(Tag))
我想查询具有特定名称的名字标签。所以我认为问题在这里得到了回答 How to perform such filter queries in mongoengine on nested dicts or arrays contained in dict with python?
但当我试着问:
^{pr2}$我知道错误了
Cannot perform join in mongoDB: nameTag__name
您可以通过使用本机Django ORM本身,以mongodb为后端,跨两个集合执行联接。因此,您不需要使用Mongoengine。在
使用django orm并使用类似于djongo 的连接器将其连接到mongodb
Mongodb没有连接,但是您的查询尝试跨两个集合进行查询。在这种情况下,您必须执行两个查询。一个用于获取匹配的标记,另一个用于查询Doc集合并查找对该标记的任何引用。在
只是说说所有的选择。 @罗斯是对的。Mongodb没有连接。但实际上你有两个选择(不仅仅是一个):
进行聚合,
mongoengine
支持它:需要
$unwind
,因为$lookup
返回一个文档列表。但在您的情况下,每个列表总是一个文档,所以您可以毫无疑问地使用此代码。在第二种方法似乎比第一种方法复杂得多。但对于第一个方法,您必须对数据库执行两个查询(第二个方法只有一个)。在某些情况下,第二种方法会更有效。在
相关问题 更多 >
编程相关推荐