У меня есть массив таких тестов,
{
"tests" : [
{
"testId" : "1",
"details" : {
"status" : "Completed"
}
},
{
"testId" : "2",
"details" : {
"status" : "InProgress"
}
},
{
"testId" : "3",
"details" : {
"status" : "Completed"
}
},
]
}
Я хочу найти полные тесты с идентификатором 1 или 2. Поэтому я написал такой запрос на совпадение
{
$match : { $and : [ { "tests.testId" : { $in : [1, 2] } }
,{ "tests.details.status" : "Completed" }
]
}
}
Проблема с этим запросом в том, что он выбирает все документы с идентификаторами 1 или 2, даже если статус не завершен. Например, приведенный выше запрос извлекает эти два документа
{
"testId" : "1",
"details" : {
"status" : "Completed"
}
},
{
"testId" : "2",
"details" : {
"status" : "InProgress"
}
},
Мне нужно выполнить запрос для поиска элемента массива parituclat для обоих условий.
Я также пробовал с $elemMatch
. Это все еще не работает. Любая помощь приветствуется.