如何使用通配符通过命令行搜索MongoDB

时间:2015-03-25 14:49:52

标签: mongodb wildcard

我尝试使用通配符搜索MongoDB以获取一些信息。我试图找到所有"代理商"使用某种类型的通配符在给定的邮政编码附近。这就是我所拥有的:

db.agents.find({company_address:"49085"},{_id:1,email:1,company_address:1}).pretty()

对于邮政编码,我可以使用以下内容:...find({company_address:"490*"}...吗?

2 个答案:

答案 0 :(得分:4)

您可以使用正则表达式查找文本/字符串中的模式。

Asumming地址以数字开头:

...find({company_address:{ $regex: '^490' }})

这允许在 490 ...

之后的所有内容

您想测试邮政编码的情况,例如:

例如:

...find({company_address:{ $regex: '^490[0-9]+$' }})

找到以490开头的字符串,并继续一个或多个数字

...find({company_address:{ $regex: '^490[0-9]{1,5}$' }})

另一个是字符串,以490开头,并持续1或5位数

...find({company_address:{ $regex: '^490[0-9]{1,}$' }})

从<4>开始,至少还有1个数字。

...find({company_address:{ $regex: '^490[0-9]{4}$' }})

从<4>开始,以490开始。

^模式表示字符串的开头,$表示字符串的结尾,这样就确保它始终是一个数字。

有关正则表达式的更多信息,请查看此处:http://docs.mongodb.org/manual/reference/operator/query/regex/

你可以在regex101测试一些正则表达式,看看你应该选择右边的Java Script,因为MongoDB使用Java Script

答案 1 :(得分:0)

试试这个&#34;以&#34;开头正则表达式:

db.agents.find(
   {
       company_address: /^490/ 
   }, //SQL equivalent like '490%'
   {_id:1, email: 1, company_address: 1}
)

假设company_address有一个字符串值。