Как выполнить поиск с использованием elemMatch в массиве SubDocument? У меня есть документ под названием ReportCollection с такими элементами, как: -elemMatch поиск по массиву поддокумента
/* 0 */
{
"_id" : ObjectId("5507bfc435e9470c9aaaa2ac"),
"owner" : ObjectId("5507bfc31e14d78e177ceebd"),
"reports" : {
"xReport" : [
{
"name" : "xReport",
"parameters" : {
"x" : {
"dateTime" : "2015-03-11T18:30:00.000Z",
"unit" : 1,
"value" : 102
}
},
"createdBy" : ObjectId("5507bfc31e14d78e177ceebd"),
"modifiedBy" : ObjectId("5507bfc31e14d78e177ceebd"),
"_id" : ObjectId("5507bfc41e14d78e177ceebf")
}
]
}
}
я получил reports.xReport [] ._ идентификатор в качестве параметра поиска.
Моя следующая попытка не удается: -
db.reports.find ({ {owner: ObjectId("5507afd3d54bae3513c185cb")},
{ 'reports.xReport': {$elemMatch: {_id: ObjectId("5507afd3d54bae3513c185cd") }}} })
Спасибо, Ниль, (На самом деле весь параметр в моем примере был частью запроса, но я сделал это слишком сложным, как я вам по праву предложил, мне не понадобилось $ elemMatch. –
@SutikshanDubey Я обычно чувствую, что это что-то стоит упомянуть, где контекст позволяет, поскольку это распространенное заблуждение наряду с различными другими операторами (в частности, '$ in',' $ nin' и т. д.), что вам нужно использовать такой оператор при работе с массивом в данных. Это не только для ваше преимущество, но на ресурсном сайте Q & A, в интересах всех, кто может наткнуться на один и тот же вопрос. Напоминающее напоминание, чтобы принять ответы, которые решают ваши вопросы. Ваша учетная запись, в частности, «свет» на принятых ответах на ваши вопросы. –
эй , Я действительно отметил, что он принят, но не уверен, почему SO не отметил ответ в качестве принятого. (Возможно, эта страница открылась в двух окнах браузера ...). Я попробовал еще раз, я надеюсь, что это будет Я остаюсь принятым. Спасибо mate (я также рассмотрел мой другой вопрос после ур 1-го комментария :)). –