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

MongoDB अन्य सभी तत्वों के आधार पर तत्वों को हटाता है (पुनरावृत्ति)

तो आपके उदाहरण के आधार पर आप ranktime . आउटपुट करना चाहते हैं जब तक यह SOURCE2 है और वही तारीख पहले ही आउटपुट में जोड़ी जा चुकी है (लेकिन केवल SOURCE2 . के लिए) )।

आप $reduce . का उपयोग कर सकते हैं पहले की तरह लेकिन आपको पहले जोड़े गए तत्वों को स्कैन करने की आवश्यकता है जो $ का उपयोग करके प्राप्त किया जा सकता है। AnyElementTrue ऑपरेटर और चूंकि आपके आउटपुट में तीसरा तत्व है, मैं मान रहा हूं कि दोहराई गई तारीख एक स्टॉप कंडीशन है, अगर वही तारीख SORUCE2 के लिए जोड़ी गई है इसलिए $filter पहले से जोड़े गए SOURCE2 . के सेट को तैयार करने के लिए भी आवश्यक है रों:

db.col.updateMany({}, [
    {
        $set: {
            ranktime: {
                $reduce: {
                    input: "$ranktime",
                    initialValue: [],
                    in: {
                        $cond: [ 
                            { 
                                $and: [ 
                                    { "$eq": [ "$$this.source", "SOURCE2" ] },
                                    {
                                        $anyElementTrue: {
                                            $map: {
                                                input: { $filter: { input: "$$value", as: "prev", cond: { $eq: { "$$prev.source", "SOURCE2" } } } }, // already added SOURCE2 elements
                                                as: "addedElement",
                                                in: { "$eq": [ { $substr: [ "$$addedElement.datum", 0, 15 ] }, { $substr: [ "$$this.datum", 0, 15 ] } ] }
                                            }                        
                                        }
                                    }
                                ]
                            },
                            "$$value", // skip current element ($$this) 
                            { $concatArrays: [ "$$value", [ "$$this" ] ] } // add current element to the output
                        ]
                    }
                }
            }
        }
    }
])

मोंगो खेल का मैदान




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला दस्तावेज़ों के बजाय जेसन ऑब्जेक्ट्स की सरणी कैसे प्राप्त करें?

  2. MongoDB डेटाबेस से SSH टनलिंग कनेक्शन बनाने के लिए Node.js का उपयोग कैसे करें

  3. मोंगो खोल में दस्तावेज़ फ़ील्ड कैसे देखें?

  4. एडब्ल्यूएस लैम्ब्डा पर MongoDB कनेक्शन पूलिंग का उपयोग कैसे करें?

  5. MongoError को कैसे हल करें:CosmosDB से कनेक्ट करते समय पूल नष्ट हो गया