我正在使用django,我需要使用正则表达式从MongoDB获取一些信息。
直接将它运行到mongo shell中我得到了我想要的结果:
db.recipe.find({"title.spanish": {"$regex" : /s[aáAÁ]lm[oóOÓ]n/i}})
我尝试使用原始在django中执行相同的查询,但它给了我一个我无法弄清楚的语法错误。
recipes = Recipe.objects(__raw__={'title.spanish' : {'$regex' : /s[aáAÁ]lm[oóOÓ]n/i}})
有关如何在django中执行此查询的任何建议?
答案 0 :(得分:1)
您应该尝试以下方法:
regx = re.compile('s[aáAÁ]lm[oóOÓ]n', re.IGNORECASE)
recipes = Recipe.objects(__raw__={'title.spanish': {'$regex': regx.pattern}})
并验证对象查询集管理器之前是否未添加过滤器。我通常将all
方法添加到模型类中(此方法返回mongo集合中的所有现有文档),因此您可以尝试使用它来代替对象并验证结果。
请告诉我这是否适合您。