当前位置:  开发笔记 > 编程语言 > 正文

REGEX在pymongo中搜索

如何解决《REGEX在pymongo中搜索》经验,为你挑选了1个好方法。

我正在尝试使用REGEX在pymongo中创建搜索.匹配后,我希望将数据附加到模块中的列表.我认为我已经完成了所有设置,但无论我为REGEX设置什么,它都会返回0结果.代码如下:

REGEX = '.*\.com'

def myModule(self, data)
    #after importing everything and setting up the collection function in the DB I call the following:
    cursor = collection.find({'multiple.layers.of.data' : REGEX})
    data = []
    for x in cursor:
        matches.append(x)
    return matches

这只是我用来过滤大量存储在mongodb中的json文件的三个模块.但是,无论我多少次更改此格式(如/.*.com/)以在操作中声明或使用mongo中的$ regex ...它都不会找到我的数据并将其附加到列表中.

编辑:添加完整的代码以及我想要识别的内容:

RegEx = '.*\.com' #Or RegEx = re.compile('.*\.com')

def filterData(self, data):
       db = self.client[self.dbName]
       collection = db[self.collectionName]
       cursor = collection.find({'data.item11.sub.level3': {'$regex': RegEx}})
       data = []
       for x in cursor:
           data.append(x)
       return data

我试图解析mongodb中的JSON数据.数据的结构如下:

"data": {
    "0": {
        "item1": "something",
        "item2": 0,
        "item3": 000,
        "item4": 000000000,
        "item5": 000000000,
        "item6": "0000",
        "item7": 00,
        "item8": "0000",
        "item9": 00,
        "item10": "useful",
        "item11": {
            "0000": {
                "sub": {
                    "level": "letter",
                    "level1": 0000,
                    "level2": 0000000000,
                    "level3": "domain.com"
                },
                "more_data": "words"
            }
        }
    }

更新:进一步测试后,似乎我需要在搜索中包含所有图层.因此,它应该看起来像

collection.find({'data.0.item11.0000.sub.level3': {'$regex': RegEx}}).

但是,"0"可以是1-50并且随机生成"0000".有没有办法将这些设置为索引作为变量,以便它无论价值多少都会进入它?它始终是一个数字值.



1> shx2..:

好吧,你需要告诉mongodb应该将字符串视为正则表达式,使用$regex运算符:

cursor = collection.find({'multiple.layers.of.data' : {'$regex': REGEX}})

我想简单地更换REGEX = '.*\.com'使用import re; REGEX = re.compile('.*\.com')也可能工作,但我不知道(会依赖于特定的处理pymongo驱动程序).


编辑:

关于问题的通配符部分:答案是否定的.

简而言之,未知的值永远不应该被指定为键,因为它使查询效率非常低.没有"外卡"查询.

最好重构数据库,使未知的值不是键

看到:

MongoDB通配符是查询的关键

http://groups.google.com/group/mongodb-user/browse_thread/thread/32b00d38d50bd858

https://groups.google.com/forum/#!topic/mongodb-user/TnAQMe-5ZGs

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有