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

सरणियों की तुलना करें और अंतर लौटाएं

प्रतिक्रिया में दस्तावेज़ को "संशोधित" करने वाली एकमात्र चीजें हैं .aggregate() और .mapReduce() , जहां पूर्व बेहतर विकल्प है।

उस स्थिति में आप $setDifference . मांग रहे हैं जो "सेट" की तुलना करता है और दोनों के बीच "अंतर" देता है।

तो अपने सरणी के साथ एक दस्तावेज़ का प्रतिनिधित्व करना:

db.collection.insert({ "b": [1, 3, 5, 6, 7, 10] })

एकत्रीकरण चलाएँ:

db.collection.aggregate([{ "$project": { "c": { "$setDifference": [ [2,3,4], "$b" ] } } }])

कौन सा रिटर्न:

{ "_id" : ObjectId("596005eace45be96e2cb221b"), "c" : [ 2, 4 ] }

यदि आप "सेट" नहीं चाहते हैं और इसके बजाय [2,3,4,4] जैसे सरणी की आपूर्ति करना चाहते हैं तो आप $filter . से तुलना कर सकते हैं और $in इसके बजाय, यदि आपके पास कम से कम MongoDB 3.4 है:

db.collection.aggregate([
  { "$project": {
    "c": {
      "$filter": {
        "input": [2,3,4,4],
        "as": "a",
        "cond": {
          "$not": { "$in": [ "$$a", "$b" ]  }
        }
      }
    }   
  }}
])

या $filter . के साथ और $anyElementTrue पुराने संस्करणों में:

db.collection.aggregate([
  { "$project": {
    "c": {
      "$filter": {
        "input": [2,3,4,4],
        "as": "a",
        "cond": {
          "$not": {
            "$anyElementTrue": {
              "$map": {
                "input": "$b",
                "as": "b",
                "in": {
                  "$eq": [ "$$a", "$$b" ]    
                }
              }    
            }
          }
        }    
      }
    }    
  }}
])

दोनों कहाँ लौटेंगे:

{ "_id" : ObjectId("596005eace45be96e2cb221b"), "c" : [ 2, 4, 4 ] }

जो निश्चित रूप से 4 . के बाद से "एक सेट नहीं" है इनपुट "दो बार" के रूप में प्रदान किया गया था और इसलिए इसे "दो बार" भी लौटाया जाता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में बहु-संग्रह, बहु-दस्तावेज़ 'लेनदेन'

  2. हरोकू ऐप को एटलस मोंगोडीबी क्लाउड सेवा से जोड़ना

  3. मोंगोडब:शो डीबीएस मेरे डेटाबेस क्यों नहीं दिखाता है?

  4. mongodb - यदि मौजूद नहीं है तो दस्तावेज़ बनाएं, अन्यथा सरणी पर धक्का दें

  5. PostgreSQL बनाम MongoDB