我有一个包含字段“ 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的手机号码。 请指教。
答案 0 :(得分:1)