查询嵌套字段时如何使用mongoengine查询操作符
How to use mongoengine query operators when querying nested fields
我正在尝试使用 python 和 mongoengine 在 mongodb 数据库中搜索文本。 mongodb 中的文档结构如下:
{'title': "Food will define the future',
'paragraphs':[
{'text': 'Consumers in the UK are drinking less milk',
'labels': ['market trends', 'UK']},
{'text': 'In France, people eat a lot of cheese',
'labels': ['market trends', 'France']}
]
}
使用mongoengine,我想在每个文档的文本字段中搜索关键字(例如'milk'),如下:
class Article(db.Document):
title = StringField()
paragraphs = ListField()
selection = Article.objects(paragraphs__text__contains = 'milk')
操作员 'contains' 似乎没有做任何事情。仅返回包含单词 'milk' 且没有其他内容(即完全匹配)的段落。出了什么问题?如何正确执行此操作?
我设法使事情正常进行。以前,在我的模型中,段落被定义为 ListField(),如下所示:
class Article(db.Document):
title = StringField()
paragraphs = ListField()
现在,我已经明确地将段落定义为 EmbeddedDocumentListField(),就像这样
class Paragraph(EmbeddedDocument):
text = StringField()
labels = ListField()
class Article(db.Document):
title = StringField()
paragraphs = EmbeddedDocumentListField(Paragraph)
此更改后,查询(包括运算符 'contains')的行为符合预期。
我仍然不太明白为什么需要嵌入文档的显式定义才能使其正常工作。所以如果有人愿意解释,请...
我正在尝试使用 python 和 mongoengine 在 mongodb 数据库中搜索文本。 mongodb 中的文档结构如下:
{'title': "Food will define the future',
'paragraphs':[
{'text': 'Consumers in the UK are drinking less milk',
'labels': ['market trends', 'UK']},
{'text': 'In France, people eat a lot of cheese',
'labels': ['market trends', 'France']}
]
}
使用mongoengine,我想在每个文档的文本字段中搜索关键字(例如'milk'),如下:
class Article(db.Document):
title = StringField()
paragraphs = ListField()
selection = Article.objects(paragraphs__text__contains = 'milk')
操作员 'contains' 似乎没有做任何事情。仅返回包含单词 'milk' 且没有其他内容(即完全匹配)的段落。出了什么问题?如何正确执行此操作?
我设法使事情正常进行。以前,在我的模型中,段落被定义为 ListField(),如下所示:
class Article(db.Document):
title = StringField()
paragraphs = ListField()
现在,我已经明确地将段落定义为 EmbeddedDocumentListField(),就像这样
class Paragraph(EmbeddedDocument):
text = StringField()
labels = ListField()
class Article(db.Document):
title = StringField()
paragraphs = EmbeddedDocumentListField(Paragraph)
此更改后,查询(包括运算符 'contains')的行为符合预期。
我仍然不太明白为什么需要嵌入文档的显式定义才能使其正常工作。所以如果有人愿意解释,请...