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

How to search MongoDB through the comand line with a wildcard

我正在尝试使用通配符搜索 MongoDB 一些信息。我正在尝试使用某种类型的通配符查找给定邮政编码附近的所有 "agents"。这是我拥有的:

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

对于邮政编码,我可以使用类似的东西吗:...find({company_address:"490*"}...?

您可以使用正则表达式在 text/strings 中查找模式。

假设地址以数字开头:

...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,}$' }})

选择 从 490 开始并且至少多 1 个数字

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

选择 从 490 开始并正好连续 4 位数字

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

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

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

一起工作

试试这个 "starts with" 正则表达式模式:

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

假设 company_address 有一个字符串值。