۱۳۹۴/۰۸/۲۳

نوشته شده توسط Reza Alizadeh Majd
دسته بندي: , , , ,

درصورتی که قصد داشته باشیم 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 نظر:

ارسال یک نظر