【问题标题】:how to do regex search in Mongodb using pymongo?如何使用 pymongo 在 Mongodb 中进行正则表达式搜索?
【发布时间】:2023-04-07 18:28:02
【问题描述】:

我想使用 pymongo 进行正则表达式 mongodb 查询。

cond = {'date':'/.*2011-8-11.*/'}
coll.find(cond).count() return 0;

但我直接在 Mongodb 上执行此查询 return 25; 我的查询有问题吗?

【问题讨论】:

  • 请注意,这并不是真正的模糊查询……而是精确匹配。模糊搜索能够设置任何类型的最小可接受接近度(或最大距离),例如 solr 中的 ~ 运算符(term~ 或 term~0.75 ...)。不幸的是,AFAIK 正则表达式和 mongoDB 都不可能。
  • 是否可以使用“正则表达式搜索”而不是“模糊搜索”来编辑问题?这就是问题的真正意义所在。

标签: python regex mongodb pymongo


【解决方案1】:

要使用 pymongo 中的正则表达式进行搜索,您需要使用 python 正则表达式对象,而不是带有斜杠的字符串。对于上面的查询,pymongo 语法为:

import re
# assume connection is set up, and db
# is a pymongo.database.Database instance
date_re = re.compile(r'2011-8-11')
db.collection.find({'date': date_re})

另外请注意,您不需要 . 字符(在 pymongo 语法或 mongo shell 语法中),除非您使用 ^$ 锚定正则表达式。

【讨论】:

  • 另外,您可以通过 db.collection.find({'date': {'$regex': '2011-8-11'}}) 来避免创建正则表达式对象的开销。
  • 这个答案与@TkTech 写的相比有什么优势(对我很有效)?
猜你喜欢
  • 2014-06-06
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 2014-10-21
相关资源
最近更新 更多