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

MongoDB के साथ उप-दस्तावेज़ों का चयन कैसे करें

पार्टी के लिए थोड़ा देर हो चुकी है, लेकिन उम्मीद है कि समाधान के लिए शिकार करने वाले अन्य लोगों की मदद करेंगे। मुझे एकत्रीकरण ढांचे का उपयोग करके ऐसा करने का एक तरीका मिल गया है और $ प्रोजेक्ट और $ को $ मैच के साथ जोड़कर, उन्हें एक साथ जोड़कर। मैंने इसे PHP का उपयोग करके किया है लेकिन आपको इसका सार मिल जाना चाहिए:

    $ops = array(
        array('$match' => array(
                'collectionColumn' => 'value',
            )
        ),
        array('$project' => array(
                'collection.subcollection' => 1
            )
        ),
        array('$unwind' => '$subCollection'),
        array('$match' => array(
                subCollection.subColumn => 'subColumnValue'
            )
        )
    );

पहले मैच और प्रोजेक्ट का उपयोग केवल इसे तेज़ बनाने के लिए फ़िल्टर करने के लिए किया जाता है, फिर उप-संग्रह पर आराम प्रत्येक उप-संग्रह आइटम को आइटम द्वारा थूक देता है जिसे फिर अंतिम मिलान का उपयोग करके फ़िल्टर किया जा सकता है।

आशा है कि यह मदद करता है।

अद्यतन (रयान व्हील से):

फिर आप $group . कर सकते हैं डेटा वापस अपनी मूल संरचना में। यह एक $elemMatch . होने जैसा है जो एक से अधिक उप-दस्तावेज़ लौटाता है:

array('$group' => array(
        '_id' => '$_id',
        'subcollection' => array(
            '$push' => '$subcollection'
        )
    )
);

मैंने इसे नोड से PHP में अनुवादित किया है, इसलिए मैंने PHP में परीक्षण नहीं किया है। अगर कोई नोड संस्करण चाहता है, तो नीचे एक टिप्पणी छोड़ दो और मैं उपकृत हो जाऊंगा।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $पुल सरणी 2 स्तर

  2. मोंगो:ऐसे आइटम ढूंढें जिनमें एक निश्चित फ़ील्ड नहीं है

  3. ClusterControl रनटाइम कॉन्फ़िगरेशन विकल्प

  4. Mongo ObjectId को क्रमबद्ध करते समय JSON.NET ने त्रुटि डाली:

  5. किसी सरणी में नई वस्तु जोड़ने के लिए MongoDB के $push का उपयोग करते समय ObjectID के साथ _id क्यों जोड़ा जाता है?