У меня есть коллекция, содержащая поле «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. Добрый совет.