小计-python调用pymongo模糊正则查询的方法

这边的数据平台,有个操作是通过关键字得出相关的项目,以前的写法是精确的匹配,这个很让人恼火,毕竟不是谁都可以记住完整的关键字和项目名称,这个着实让人闹心。 


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]:


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

4 Responses

  1. 慢慢加载吧_ 2015年4月27日 / 下午12:56

    不错,这里要弄成参数才可以识别正则~~~,解决了,谢谢了

  2. 开心 2014年11月5日 / 上午8:00

    刚才在别博客看到文章,果然爬虫厉害

    • 峰云 2014年11月6日 / 下午1:46

      是呀,tuicool.com 总是爬我的内容。 哎

发表评论

电子邮件地址不会被公开。 必填项已用*标注