MongoDB按字符串长度查找

时间:2019-06-27 15:21:41

标签: mongodb mongoose mongodb-query

我有一个包含字段“ MobileNumber”的集合。我需要找到符合以下条件的记录:

1-以9613开始,字符数不超过10
2-以961而不是9613开头,并且字符数不同于11

集合看起来像这样:

[
 {"_id": ObjectId("..."), "MobileNumber": "961xxxx", "Name" : "John"},
 {"_id": ObjectId("..."), "MobileNumber": "961xxxx", "Name" : "Alex"},
 {"_id": ObjectId("..."), "MobileNumber": "971xxxx", "Name" : "Fatima"},
 {"_id": ObjectId("..."), "MobileNumber": "971xxxx", "Name" : "Mughees"},
 {"_id": ObjectId("..."), "MobileNumber": "901xxxx", "Name" : "Mike"},
 {"_id": ObjectId("..."), "MobileNumber": "911xxxx", "Name" : "Thomas"}
]

我尝试过这样:

db.mobileinfos.find(
{ 
   $expr: { 
        $and:[ 
             {MobileNumber: /^961/},
             {$ne: [{ $strLenCP: "$MobileNumber" }, 10 ] }
           ]    
} 
}
)

但是看起来上面的查询忽略了$的第一个条件,而只给出了第二个条件的记录。

我正在获取所有长度不等于10的手机号码。但是我只需要那些以961开头且长度不等于10的手机号码。 请指教。

1 个答案:

答案 0 :(得分:1)

MongoPlayground

  

但是我只需要那些以961开头且长度不等于10的手机号码。

这里是:

{
    "presets": ["@babel/env", "@babel/react"]
}