Mongo通过Regex搜索未知领域

时间:2014-12-29 12:04:01

标签: php regex mongodb

我正在基于各种excel工作表设置一个mongo数据库。 每个工作表都包含有关人员的数据。 但是列名没有统一,所以我不知道我在数据库中保存的字段。 现在我想搜索所有包含' email'等字段的记录。所以我想抓取所有电子邮件,电子邮件,电子邮件,电子邮件,电子邮件,电子邮件,电子邮件,电子邮件。邮件','邮件'等...种类的字段。

所以我的问题是:

(1)当我们不知道我们正在寻找的领域时,我们如何在蒙戈进行搜索? 我理解在查询中我们可以做一个" / mail /"或者" /。邮件。 /"制作一个正则表达式,但在那里我仍然需要知道这个正则表达式的字段!

(2)如何对此字段进行不区分大小写的查询?

1 个答案:

答案 0 :(得分:0)

对于第一个问题:您无法根据键的名称执行查询以匹配文档。 MongoDB中的密钥是已知数量,而不是您查询或视为文档内容的一部分。我建议努力枚举和规范所有不同的列名。这是一种痛苦,但值得。

对于第二个:MongoDB没有正确的“不区分大小写的搜索”。根本原因是,当您考虑到不同的语言和脚本时,不区分大小写的搜索实际上非常困难和复杂,并且MongoDB还没有实现处理它所需的所有工具。然而,围绕这种限制有两种常用的方法。您可以存储已进行大小写标准化的字段的辅助值

{
    "flavor" : "cHoCOlatE",
    "flavor_lc" : "chocolate"
}

或者你可以使用不区分大小写的正则表达式(这只适用于ASCII)

db.collection.find({ "flavor" : /chocolate/i })