ฉันมีคอลเลกชัน mongo พร้อม doc ดังนี้: -
{
"_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"
s ที่ได้รับดำเนินการรวมเพื่อค้นหาการแสดงผลสำหรับ "id"
แต่ละรายการสำหรับบริการตามที่แนะนำโดยคำตอบสำหรับคำถามนี้ที่ฉันถามก่อนหน้านี้:- MapReduce ใน PyMongo
แต่ฉันต้องการเฉพาะรายการ 'id'
ที่แตกต่างกันในบริการ ไม่ใช่การแสดงผล กรุณาช่วย!