Ниже коллекция в MongoDBКаков правильный способ запроса в mongodb для массива документов?
{
"name" : "Tom" ,
"occupation" : "employee" ,
"data" : [
{
"owns" : "Television" ,
"company" : "xyz"
},
{
"owns" : "Television" ,
"company" : "abc"
},
{
"owns" : "laptop" ,
"company" : "abc"
} ,
{
"owns" : "Television" ,
"company" : "xyz"
}
]
}
когда я запрашиваю
db.exp.find({"data.owns" : "Television"})
MongoDB возвращает документ, который имеет «владеет»: «ноутбук» в наборе результатов.
когда я запрашиваю
db.exp.find({"data.owns": "Television"},{_id: 0, data: {$elemMatch: {"owns": "Television"}}})
результат отображается только один документ из поля данных, где первый матч «Television» найден
Как мне запрос, чтобы получить все 3 документа, где Том владеет телевидения за исключением ноутбук документ. Ожидаемый результат
[
{
"owns" : "Television" ,
"company" : "xyz"
},
{
"owns" : "Television" ,
"company" : "abc"
},
{
"owns" : "Television" ,
"company" : "xyz"
}
]
Примечание: Я упомянул только 4 документов в поле данных в этом примере, где в качестве оригинала коллекции имеет более 50 документов. извините за мой бедный английский :).
вместо фильтрации документов во внешнем приложении, не мы в состоянии выполнить эту задачу в самой базе данных? –
Вы можете использовать агрегацию для этой цели. Извините, что я не упомянул в ответе. – Rajeshwar