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

उप दस्तावेज़ में सरणी के अंतिम मान का चयन करें

ऐसा करने के लिए आपको एकत्रीकरण ढांचे की आवश्यकता है, मुझे लगता है कि आपको वास्तव में संरचना बदलनी चाहिए, लेकिन आपके पास जो है उसके साथ काम करना:

Model.aggregate(
    [
       { "$match": { "prices.100": { "$exists": true } }},
       { "$unwind": "$prices.100" },
       { "$group": {
          "_id": "$_id",
          "price": { "$last": "$prices.100" }
       }},
       { "$project": { "_id": 0, "prices.100": "$price" } }
     ]
) 

भविष्य की रिलीज़ में आप केवल नए $slice . का उपयोग करने में सक्षम होंगे ऑपरेटर:

Model.aggregate(
    [
        { "$match": { "prices.100": { "$exists": true } } },
        { "$project": {
            "_id": 0,
            "prices.100": { "$slice": ["$prices.100",-1] }
        }}
    ]
)

वास्तव में आप एक ही समय में "दोनों" फ़ील्ड कर सकते हैं:

Model.aggregate(
    [
        { "$match": { "prices.100": { "$exists": true } } },
        { "$project": {
            "_id": 0,
            "prices.100": { "$slice": ["$prices.100",-1] },
            "prices.101": { "$slice": ["$prices.100",-1] }
        }}
    ]
)

और यह $unwind और $last सरणी का अंतिम तत्व प्राप्त करने के लिए जब $group डेटा वापस पाने के लिए लागू किया जाता है।

यह मूल रूप से नए रूप में नियमित क्वेरी के समान प्रदर्शन करता है। वर्तमान स्वरूप में, यह धीमा होने वाला है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला वैकल्पिक खोज क्वेरी पैरामीटर?

  2. Mongoexport त्रुटि पार्सिंग क्वेरी

  3. MongoDB के लिए डेटाबेस अनुक्रमण का अवलोकन

  4. MongoDB के लिए नया आदेश mongo नहीं चला सकता

  5. इन्सर्ट (), इन्सर्टऑन (), और इन्सर्टमैनी () मेथड में क्या अंतर है?