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

किसी सरणी को n विशेषताओं वाले दस्तावेज़ों के मानचित्र में बदलने की क्वेरी

MongoDB 3.4.4 और इसके बाद के संस्करण से, आप $arrayToObject ऑपरेटर जो एक सरणी को एक दस्तावेज़ में बदल देता है और सरणी उन दस्तावेज़ों की एक सूची होनी चाहिए जिनमें दो फ़ील्ड हों, k और v कहां:

तो आपको एक पाइपलाइन बनाने की आवश्यकता होगी जो पहले items . को रूपांतरित करे से सरणी

"items":[  
    {  
      "id":"AB-02",
      "qty":2
    },
    {  
      "id":"AB-03",
      "qty":0
    },
    {  
      "id":"AB-03",
      "qty":9
    }
]

करने के लिए

"items" : [ 
    {
        "k" : "AB-02",
        "v" : {
            "id" : "AB-02",
            "qty" : 2.0
        }
    }, 
    {
        "k" : "AB-03",
        "v" : {
            "id" : "AB-03",
            "qty" : 0.0
        }
    }, 
    {
        "k" : "AB-03",
        "v" : {
            "id" : "AB-03",
            "qty" : 9.0
        }
    }
]

$map अभिव्यक्ति के साथ सही ढंग से करता है

"$map": {
    "input": "$items",
    "as": "item",
    "in": {
        "k": "$$item.id",
        "v": "$$item"
    }                            
}

तो आपकी अंतिम पाइपलाइन उपरोक्त सभी ऑपरेटरों को $addFields के रूप में:

db.collection.aggregate([
    {
        "$addFields": {
            "items": {
                "$arrayToObject": {
                    "$map": {
                        "input": "$items",
                        "as": "item",
                        "in": {
                            "k": "$$item.id",
                            "v": "$$item"
                        }                            
                    }
                }
            }
        }
    }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB अंतहीन खोजें ToListAsync

  2. मोंगोडब सरणी तत्वों की तुलना करता है

  3. मुझे यह पदावनत चेतावनी क्यों मिल रही है ?! मोंगोडीबी

  4. MongoDB 2.6 प्रतिकृति सेट पर HTTP कंसोल को कैसे सक्षम करें

  5. नेवला .save() काम नहीं करता