Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में $elemMatch के साथ सरणी में रेंज क्वेरी (gt/lt) करना

MongoDB में सरणी तत्वों पर रेंज क्वेरी: $elemMatch

जब आपको सरणी के एक ही तत्व पर एकाधिक शर्तें लागू करनी हों (उदाहरण: Price > 600 और Price < 900), तो $elemMatch का उपयोग करें। इसके बिना, शर्तें सरणी के अलग-अलग तत्वों द्वारा पूरी की जा सकती हैं।

नमूना डेटा

> db.demo341.insertOne({
    "Name": "Chris",
    "productDetails": [
        {"ProductPrice": {"Price": 800}},
        {"ProductPrice": {"Price": 400}},
        {"ProductPrice": {"Price": 300}}
    ]
});
{ "acknowledged": true, "insertedId": ObjectId("5e53ed5cf8647eb59e5620a7") }

> db.demo341.insertOne({
    "Name": "Chris",
    "productDetails": [
        {"ProductPrice": {"Price": 1000}},
        {"ProductPrice": {"Price": 1200}},
        {"ProductPrice": {"Price": 1300}}
    ]
});
{ "acknowledged": true, "insertedId": ObjectId("5e53edc1f8647eb59e5620a8") }

क्वेरी: Price 600 और 900 के बीच (एक ही तत्व में)

> db.demo341.aggregate([
    {
        $match: {
            "productDetails": {
                $elemMatch: {
                    "ProductPrice.Price": {$gt: 600, $lt: 900}
                }
            }
        }
    }
]).pretty();

परिणाम

{ "_id": ObjectId("5e53ed5cf8647eb59e5620a7"), "Name": "Chris", "productDetails": [ {"ProductPrice": {"Price": 800}}, ... ] }

पहला दस्तावेज़ वापस किया गया क्योंकि इसमें एक तत्व है (Price: 800) जो दोनों शर्तें पूरी करता है। दूसरा दस्तावेज़ बाहर हो गया क्योंकि इसका कोई भी तत्व 600-900 रेंज में नहीं है। $elemMatch के बिना, {$gt: 600, $lt: 900} अलग-अलग तत्वों द्वारा संतुष्ट हो सकता था (गलत परिणाम)।

  1. - MongoDB में $filter का उपयोग करके सबडॉक्यूमेंट को मानदंड के आधार पर ढूंढना और वापस करना

    MongoDB एग्रीगेशन में सबडॉक्यूमेंट फ़िल्टरिंग $filter के साथ $addFields का उपयोग करके सरणी से केवल उन सबडॉक्यूमेंट्स को रखें जो विशिष्ट मानदंड (उदाहरण: isMarried: true) पूरे करते हैं। नमूना डेटा > db.demo345.insertOne({ UserName: Robert, UserDetails: [ {isMarried: false, CountryN

  1. - MongoDB में ऑब्जेक्ट्स की सरणी के अंदर कई मिलान कैसे खोजें?

    इसके लिए, $and के साथ $regex का उपयोग करें। $and एक या अधिक एक्सप्रेशन की सरणी पर लॉजिकल AND ऑपरेशन करता है और उन दस्तावेज़ों को चुनता है जो सरणी में सभी एक्सप्रेशन को संतुष्ट करते हैं। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo525.insertOne({details:[{Name:Chris,CountryName:US}]}); { ackn

  1. - MongoDB में सरणी क्वेरी करके विशिष्ट मान प्राप्त करें

    सरणी से विशिष्ट मान प्राप्त करने के लिए aggregate() के साथ $project का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo761.insertOne( { details: [ { student: { FullName: Chris Brown } } ] } ); { acknowledged : true, insertedId : ObjectId(5eb034d15637cd592b2a4af1) } > db.demo761.insertOne( { de