这边的数据平台,有个操作是通过关键字得出相关的项目,以前的写法是精确的匹配,这个很让人恼火,毕竟不是谁都可以记住完整的关键字和项目名称,这个着实让人闹心。 mongodb shell模式的模糊查询是用,db.project.find({name:/xiaorui.cc/}) 。 在pymongodb
这边的数据平台,有个操作是通过关键字得出相关的项目,以前的写法是精确的匹配,这个很让人恼火,毕竟不是谁都可以记住完整的关键字和项目名称,这个着实让人闹心。
mongodb shell模式的模糊查询是用,db.project.find({‘name’:/xiaorui.cc/}) 。 在pymongodb里面肯定不能是这个样子了。 我原以为和pymongo差不多,最后总是出错,最后看了下文档,才解决的问题。
db.project.find({'name':/汽车/})
{ "_id" : 139, "black_list" : [ ], "created_on" : ISODate("2014-10-08T15:09:41.560Z"), "effective_time" : [ 1412697600, 1412697600 ], "industry_id" : 1000, "name" : "爱卡汽车", "regex" : 0, "status" : 0, "topic_ids" : [ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032 ], "user_id" : 44, "white_list" : [ ] }
下面是python使用pymongo来的正则模糊查询方式。 两种,一个是mongo自带的扩展,regex,另一个是可以嵌入import re模块来操作。
注释:
老规矩,原文地址是 blog.xiaorui.cc … 爬虫,fuck !
In [76]: a
Out[76]: '\xe6\xb1\xbd\xe8\xbd\xa6'
In [77]: print a
汽车
In [78]: list(db.project.find({'name':{'$regex':a}}))
Out[78]:
[{u'_id': 139,
u'black_list': [],
u'created_on': datetime.datetime(2014, 10, 8, 15, 9, 41, 560000),
u'effective_time': [1412697600, 1412697600],
u'industry_id': 1000,
u'name': u'\u7231\u5361\u6c7d\u8f66',
u'regex': 0,
u'status': 0,
u'topic_ids': [2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026,
2027,
2028,
2029,
2030,
2031,
2032],
u'user_id': 44,
u'white_list': []}]
In [79]: list(db.project.find({'name':re.compile(a)}))
Out[79]:
[{u'_id': 139,
u'black_list': [],
u'created_on': datetime.datetime(2014, 10, 8, 15, 9, 41, 560000),
u'effective_time': [1412697600, 1412697600],
u'industry_id': 1000,
u'name': u'\u7231\u5361\u6c7d\u8f66',
u'regex': 0,
u'status': 0,
u'topic_ids': [2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026,
2027,
2028,
2029,
2030,
2031,
2032],
u'user_id': 44,
u'white_list': []}]
In [80]:
原文地址:小计-python调用pymongo模糊正则查询的方法, 感谢原作者分享。










