درصورتی که قصد داشته باشیم document هایی از یک collection خاص را براساس شرطی بر روی یکی از فیلد های از نوع آرایه ای آنها پیدا کنیم میتونیم از عبارت $elemMatch بصورت زیر استفاده کنیم:
مثال اول:
فرض میکنیم collection ما شامل موارد زیر باشد:
{ _id: 1, results: [ 82, 85, 88 ] } { _id: 2, results: [ 75, 88, 89 ] }
در این صورت برای پیدا کردن document هایی که قیلد result آنها دارای عدد ۸۸ است بصورت زیر عمل میکنیم:
db.collection.find({ results: { $elemMatch: 88 } })
همچنین میتوان از شرط های پیچیده تری استفاده نمود:
db.collection.find({ results: { $elemMatch: { $gte: 80, $lt: 85 } } })
مثال دوم (آیتم های آرایه از نوع آبجکت):
فرض میکنیم collection ما شامل موارد زیر باشد:
{ _id: 1, results: [ { product: "abc", score: 10 }, { product: "xyz", score: 5 } ] } { _id: 2, results: [ { product: "abc", score: 8 }, { product: "xyz", score: 7 } ] } { _id: 3, results: [ { product: "abc", score: 7 }, { product: "xyz", score: 8 } ] }
برای یافتن مواردی که در آنها product ی با مقدار score بزرگتر مساوی 8 باشد بصورت زیر عمل میکنیم:
db.collection.find({ results: { $elemMatch: { product: "xyz", score: { $gte: 8 } } } })
0 نظر:
ارسال یک نظر