【发布时间】:2011-07-24 08:24:12
【问题描述】:
我有一个包含这样记录的集合
> db.company.findOne({companyId:1})
{
"_id" : ObjectId("4e22ff08eefdd839f60ab95f"),
"lastUpdate" : ISODate("2011-07-11T17:00:00Z"),
"errorCount" : 0,
"house" : 49,
"phones" : [
{
"cityCode" : "3852",
"number" : "461423",
"type" : "phone"
},
{
"cityCode" : "3852",
"number" : "461317",
"type" : "phone"
}
],
"houseAdd" : "",
"rubricsId" : [
NumberLong(184108177),
NumberLong(184108175)
],
"companyId" : NumberLong(1)
}
现在我正在尝试查找电话号码以 8-800 开头的所有公司 我正在尝试搜索我的查询
db.company.find({"phones.number":/8-800.*/}
并得到一个空列表。但是
db.company.find({"phones.number":/8.*/})
返回电话号码以 8 开头的所有公司。 AFAIK '-' 在这种情况下不是正则表达式的特殊字符吗?我正在尝试正则表达式 '8\-800' ,结果相同。我哪里错了?
【问题讨论】:
-
您是否尝试转义破折号 (
8\-800.*)?也许 mongo 正则表达式引擎不喜欢破折号,即使它们在[]之外 -
对不起,不要在我的帖子中转义\。已编辑。
-
感谢您修正报价。如果你使用
/8.800.*/会发生什么?您确定您有包含“8-800”的phones.number值吗? -
@mu 太短了 - 无论如何都可以很好地回答!使用 /8.800.*/ 我得到一个空结果:(。是的,我知道电话 8-800-2000-245 的 companyId 并且可以通过 companyId 使用 findOne 看到它
-
我正在使用 mongo 1.8.2,如果有关系的话