pymongo处理正则表达式的情况

Posted dahu的菜园子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pymongo处理正则表达式的情况相关的知识,希望对你有一定的参考价值。

在python里使用pymongo处理mongodb数据库,在插入或者查询的时候,我们有时需要使用操作符号,如set,in,

具体操作符的可以参考  https://docs.mongodb.com/manual/reference/operator/query/

需求:需要用到正则表达式 来插入 或查询,如何操作?

1.首先要了解一下,mongodb里面的正则表达式怎么用

参考:https://docs.mongodb.com/manual/reference/operator/query/regex/

使用如下语法:

{ <field>: { $regex: /pattern/, $options: <options> } }
{ <field>: { $regex: pattern, $options: <options> } }
{ <field>: { $regex: /pattern/<options> } }

或者

{ <field>: /pattern/<options> }

当然option的含义是对正则表达式的一种选择,有

i  不区分大小写

m  包含锚的模式(即起始为 ^,结束为 $)

x   扩展

s   允许.点字符

详细的参考官网,这只是很简单的介绍

2.在pymongo里如何使用

mongodb默认使用的是bson数据,所以要在python里转换为该格式的数据

import bson

然后参照官网教程:http://api.mongodb.com/python/current/api/bson/regex.html

>>> pattern = re.compile(.*)
>>> regex = Regex.from_native(pattern)
>>> regex.flags ^= re.UNICODE
>>> db.collection.insert({pattern: regex})

这里注意一下,Regex是bson的类,可以导入

我的实例: 

    for collection in col_list:
        pattern = re.compile(time.strftime(%Y-%m-%d))
        regex = bson.regex.Regex.from_native(pattern)
        regex.flags ^= re.UNICODE
        for item in db[collection].find({"insert_time":regex}):
            for j in item[value]:
                ...

 

以上是关于pymongo处理正则表达式的情况的主要内容,如果未能解决你的问题,请参考以下文章

PyMongo $in + $正则表达式

Pymongo $regexMatch 正则表达式选项中的无效标志:u

如何在 pymongo 中正确设计正则表达式?

如何使用正则表达式查询 pymongo 以获取仅包含数字的值

带有日期时间的 MongoDB / Pymongo 查询

100天精通Python(进阶篇)——第40天:pymongo操作MongoDB数据库基础+代码实战