MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

नेस्टेड सरणी संग्रह से पुनर्प्राप्त करने के लिए mongoDB क्वेरी

आपको आवश्यकता होगी $elemMatch और एग्रीगेट

db.users.aggregate([
    {
        $unwind: "$Sessions"
    },
    {
        $match: {
            "Sessions.Last_Login": {
                $gte: ISODate("2016-06-16T00:00:00.0Z"),
                $lt: ISODate("2016-06-17T00:00:00.0Z")
            }
        }
    },
    {
        $group: {
            _id: {
                _id: "$_id",
                First_Name: "$First_Name",
                Last_Name: "$Last_Name"
            },
            Sessions: {
                $push: "$Sessions"
            }
        }
    },
    {
        $project: {
            _id: "$_id._id",
            First_Name: "$_id.First_Name",
            Last_Name: "$_id.Last_Name",
            Sessions: "$Sessions"
        }
    }
])

तो क्वेरी उन चरणों को पूरा करेगी:

  1. $unwind सभी Sessions तत्व
  2. $match दिनांक सीमा के अंदर दस्तावेज़
  3. $group _id . द्वारा एक साथ दस्तावेज़ , First_Name , Last_Name
  4. $project मूल प्रारूप की तरह दिखने वाले दस्तावेज़

मैंने कुछ फ़ील्ड छोड़े हैं, लेकिन आप इसे आसानी से $group . में जोड़ सकते हैं और $project कदम। और निश्चित रूप से आपको तिथि सीमा बदलनी होगी।

मैं एक बड़े संग्रह में इस क्वेरी के प्रदर्शन के बारे में चिंतित हूं। हो सकता है कि आप मेरे द्वारा दी गई पहली क्वेरी का उपयोग करें और अपने कोड में अपने इच्छित सत्रों को फ़िल्टर करें।

संपादित करें:

जैसा कि @chridam ने कहा, यह क्वेरी तभी काम करेगी जब आप Last_Login . को बदलेंगे करने के लिए ISODate() , क्या अनुशंसित है।

2 संपादित करें:

aggregate . का उपयोग करने के लिए क्वेरी को अपडेट करना और केवल Sessions लाने के अनुरोध का मिलान करें दिनांक सीमा के अंदर।

यह पुराना संस्करण है:

db.users.filter({
    'Sessions': {
        '$elemMatch': {
            'Last_Login': {
                '$gte': ISODate("2016-06-16T00:00:00.0Z"),
                '$lt': ISODate("2016-06-17T00:00:00.0Z")
            }
        }
    }
})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node.js, Mongo डेटा ढूंढते हैं और वापस करते हैं

  2. नेवला ऑटो रीकनेक्ट विकल्प

  3. नेस्टेड ऑब्जेक्ट्स को कैसे क्वेरी करें?

  4. नोड.जेएस एक्सप्रेस मोंगोडब संदेश बचाते हैं?

  5. ReactiveMongo FindAndModify Clarification