Я пытаюсь найти все lists
, которые person
number
содержат '-'
или '.'
внутри. Я уже попробовал этот ответ , но он не работает для элементов внутри массива.
Но когда я пытаюсь найти по всей строке, без записи regex
, документ обнаруживается.
За пример:
db.getCollection('list').find({"persons.number": "123456789"}) //works!
db.getCollection('list').find({"persons.number": /3/}) //not work...
db.getCollection('list').find({"persons.number": /.*3.*/}) //not work
db.getCollection('list').find({"persons.number": /.*..*/}) //not work
db.getCollection('list').find({"persons.number": /.*[-\.]+.*/}) //not work
Если я попытаюсь найти документ по некоторому атрибуту вне массива (атрибут из list
, для примера), /3/
, /.*3.*/
и /.*[-\.]+.*/
работает .
Формат документа:
{
"_id" : ObjectId("5af3037ee8006c4a04e84b2f"),
"id" : 1,
"persons" : [
{
"id" : 1,
"number" : "123.123.123-22"
},
{
"id" : 2,
"number" : "123.456.789-11"
}
]
}
Итак, какие есть варианты?
Я использую MongoDB из Azure. Выполнение db.version()
на консоли возвращает 3.2.0
.