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

MongoDb पिछले से पहली घटना पर एक सरणी में अद्यतन वस्तु

मैं समझता हूं कि आप क्या कह रहे हैं कि आप इस मामले में अंतिम तत्व से मेल खाना चाहते हैं या वास्तव में मैच को रिवर्स ऑर्डर में संसाधित करना चाहते हैं। इसे और स्थितिगत <कोड में संग्रहीत अनुक्रमणिका को संशोधित करने का कोई तरीका नहीं है>$ ऑपरेटर हमेशा "पहला" मैच होगा।

लेकिन आप इसके प्रति अपना दृष्टिकोण बदल सकते हैं, $पुश सरणी के अंत में "संलग्न" करना है। लेकिन MongoDB 2.6 ने एक $position संशोधक ताकि आप वास्तव में हमेशा "प्री-पेंड" कर सकें, जिसका अर्थ है कि आपका "सबसे पुराना" आइटम अंत में है।

उदाहरण के लिए इसे लें:

db.artest.update(
   { "array": { "$in": [5] } },
   { "$push": { "array": { "$each": [5], "$position": 0 } }},
   { "upsert": true }
)

db.artest.update(
    { "array": { "$in": [5] } },
    { "$push": { "array": { "$each": [6], "$position": 0 } }},
    { "upsert": true }
)

इसका परिणाम एक दस्तावेज़ में होता है जो सामान्य $push . का "रिवर्स" होता है व्यवहार:

{ "_id" : ObjectId("53eaf4517d0dc314962c93f4"), "array" : [ 6, 5 ] }

वैकल्पिक रूप से आप $sort तत्वों को "ऑर्डर" करने के लिए अपने दस्तावेज़ों को अपडेट करते समय संशोधक ताकि वे उलट हो जाएं। लेकिन डुप्लिकेट मान संग्रहीत होने पर यह सबसे अच्छा विकल्प नहीं हो सकता है।

तो यदि आप "नवीनतम" आइटम "पहले" से मेल खाना चाहते हैं तो अपने सरणी को "रिवर्स" में संग्रहीत करने पर ध्यान दें। वर्तमान में आपके "आखिरी से मिलान" व्यवहार प्राप्त करने का यही एकमात्र तरीका है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. चपटा mongoDB स्कीमा

  2. MongoDB Mongoose दिनांक सीमा के अनुसार उप-दस्तावेज़ों की एक गहरी नेस्टेड सरणी की क्वेरी कर रहा है

  3. कच्चे फ़ंक्शन में चर $ tid, $ id कैसे पास करें?

  4. मोंगोडब एकत्रीकरण:किसी सरणी के केवल मिलान करने वाले तत्वों को कैसे वापस करें

  5. संयोजित क्षेत्रों के परिणाम का उपयोग करके दस्तावेज़ को अपडेट करें