У меня есть коллекция монго с документом следующим образом: -
{
"_id" : ObjectId("55a9378ee2874f0ed7b7cb7e"),
"_uid" : 10,
"impressions" : [
{
"pos" : 6,
"id" : 123,
"service" : "furniture"
},
{
"pos" : 0,
"id" : 128,
"service" : "electronics"
},
{
"pos" : 2,
"id" : 127,
"service" : "furniture"
},
{
"pos" : 2,
"id" : 125,
"service" : "electronics"
},
{
"pos" : 10,
"id" : 124,
"service" : "electronics"
}
]
},
{
"_id" : ObjectId("55a9378ee2874f0ed7b7cb7f"),
"_uid" : 11,
"impressions" : [
{
"pos" : 1,
"id" : 124,
"service" : "furniture"
},
{
"pos" : 10,
"id" : 124,
"service" : "electronics"
},
{
"pos" : 1,
"id" : 123,
"service" : "furniture"
},
{
"pos" : 21,
"id" : 122,
"service" : "furniture"
},
{
"pos" : 3,
"id" : 125,
"service" : "electronics"
},
{
"pos" : 10,
"id" : 121,
"service" : "electronics"
}
]
}
Моя цель - найти все "id"
в конкретном "service"
, скажем, "furniture"
, т.е. получить такие результаты:
[122,123,124,127]
Но я не могу понять, как оформить условие в
db.collection_name.find()
из-за трудности с условием для 'n'-го элемента в массиве, "impressions[n]":"value"
.
Один из вариантов — использовать полученную агрегированную операцию "id"
для поиска показов для каждого "id"
для службы, как это было предложено в ответе на этот вопрос, который я задал ранее: — MapReduce в PyMongo.
Но мне нужен только список различных 'id'
в службе, а не впечатления. Пожалуйста, помогите!