Saya memiliki koleksi mongo dengan dokumen sebagai berikut: -
{
"_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"
}
]
}
Tujuan saya adalah menemukan semua "id"
dalam "service"
tertentu, katakanlah "furniture"
yaitu untuk mendapatkan hasil seperti ini:
[122,123,124,127]
Tetapi saya tidak dapat menemukan cara untuk membingkai kondisi tersebut
db.collection_name.find()
karena sulitnya mendapatkan kondisi untuk elemen 'n' dalam array, "impressions[n]":"value"
.
Salah satu opsinya adalah menggunakan "id"
s yang diperoleh untuk melakukan operasi agregat guna menemukan tayangan untuk setiap "id"
layanan seperti yang disarankan oleh jawaban atas pertanyaan yang saya ajukan sebelumnya:- MapReduce di PyMongo.
Tapi saya hanya ingin daftar 'id'
yang berbeda dalam suatu layanan, bukan tayangannya. Mohon bantuannya!