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

MongoDB नेस्टेड ऑब्जेक्ट्स ढूंढ रहा है जो मानदंडों को पूरा करते हैं

चूंकि सरणियाँ नेस्टेड हैं, इसलिए आप मूल प्रक्षेपण का उपयोग नहीं कर सकते जैसा कि आप खोज के साथ कर सकते हैं। साथ ही किसी दस्तावेज़ से सरणी सामग्री को "फ़िल्टर" करने के लिए आपको पहले सरणी सामग्री को "खोलना" चाहिए। इसके लिए आप एग्रीगेशन फ्रेमवर्क का उपयोग करें:

   $results = $db->genealogical_data->aggregate(array(
       array( '$match' => array(
           'people.search_columns.givenname' => 'Valentine'
       )),
       array( '$unwind' => '$people' ),
       array( '$match' => array(
           'people.search_columns.givenname' => 'Valentine'
       )),
       array( '$group' => array(
           '_id' => '$id',
           'name' => array( '$first' => '$name' ),
           'people' => array( '$push' => '$people' )
       ))
   ));

पहले का बिंदु $match चरण उन दस्तावेजों को कम करना है जो संभवतः आपके मानदंडों से मेल खाते हैं। दूसरी बार $unwind<के बाद किया जाता है /कोड> , जहां दस्तावेज़ में वास्तविक "सरणी" आइटम परिणामों से "फ़िल्टर" किए जाते हैं।

अंतिम $group मूल सरणी को वापस सामान्य पर रखता है, उन मदों को घटाता है जो मानदंड से मेल नहीं खाते हैं।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या नेवले का विशिष्ट कार्य एक प्रश्न में रेगेक्स का समर्थन करता है?

  2. मोंगोडीबी:उस आइटम के किसी अन्य फ़ील्ड से मेल खाने के साथ किसी आइटम के फ़ील्ड को सरणी में अपडेट करें

  3. मोंगो और उल्का में नेस्टेड श्रेणी के लिए सर्वोत्तम अभ्यास

  4. मोंगोडब में परिणामों को कैसे क्रमबद्ध और सीमित करें?

  5. PyMongo 2 या अधिक क्षेत्रों के साथ अद्वितीय अनुक्रमणिका बनाता है