Я использую CosmosDB (с mongodb-api).
Для этого примера я использую следующие документы:
/* 1 */
{
"_id" : "abspi4lxwfbfjahdvjm3clnnl4",
"categories" : [
{
"_name" : "category-1",
"date" : NumberLong(1540373282070),
"string" : "20",
"number" : 20
},
{
"_name" : "category-2",
"string" : "1",
"number" : 1
}
]
}
/* 2 */
{
"_id" : "ggi36vpvprdbrdnji5otypbh3e",
"categories" : [
{
"_name" : "category-2",
"date" : NumberLong(1540373282071),
"string" : "1",
"number" : 1
}
}
}
/* 3 */
{
"_id" : "kdh3jdyenapq54clufgajmgfy8",
"categories" : [
{
"_name" : "category-1",
"date" : NumberLong(1540373282070),
"string" : "20",
"number" : 20
},
{
"_name" : "category-2",
"string" : "1",
"number" : 1
},
{
"_name" : "category-3",
"string" : "29",
"number" : 29
}
]
}
Мне нужно получить документы 1 и 3, следующее совпадение запросов отлично работает в mongoDB.
db.getCollection('test_collection')
.find({"categories":{
"$all":[
{"$elemMatch":{"number":20}},
{"$elemMatch":{"number":1}}
]
}
})
В CosmosDB возвращает 0 записей. Кажется, что более 1 elemMatch в cosmosDB не поддерживается.Любая идея, если это возможно сделать запрос в CosmosDB с mongoDB-api?