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

यदि सरणी मौजूद है तो ऑब्जेक्ट को सरणी में पुश करें अन्यथा MongoDB में ऑब्जेक्ट के साथ सरणी बनाएं

यहां सभी संभावित मामलों की व्याख्या करने के लिए, प्रत्येक दस्तावेज़ मामले पर विचार करें:

यदि आपका दस्तावेज़ बदलने के लिए ऐसा दिखता है:

{
    "_id": "efgh",
    "name": "Jerry"
}

फिर इस तरह का एक अपडेट स्टेटमेंट:

db.collection.update(
    { "_id": "efgh" },
    { "$push": { "myArray": { "field1": "abc", "field2": "def" } } }
)

इसमें परिणाम:

{
    "_id": "efgh",
    "name": "Jerry",
    "myArray": [
        {
            "field1": "abc",
            "field2": "def"
        }
    ]
}

तो सरणी बनाई जाती है और नया आइटम जोड़ा जाता है।

अगर आपके दस्तावेज़ में पहले से ही इस तरह की एक सरणी है:

{
    "_id": "abcd",
    "name": "Tom",
    "myArray": [
        {
            "field1": "",
            "field2": ""
        }
    ]
}

और आप मूल रूप से वही कथन करते हैं:

db.collection.update(
    { "_id": "abcd" },
    { "$push": { "myArray": { "field1": "abc", "field2": "def" } } }
)

फिर नई दस्तावेज़ सामग्री को मौजूदा सरणी में जोड़ दिया जाता है:

{
    "_id": "abcd",
    "name": "Tom",
    "myArray": [
        {
            "field1": "",
            "field2": ""
        },
        {
            "field1": "abc",
            "field2": "def"
        }
    ]
}

यदि आपके मूल दस्तावेज़ में नामित फ़ील्ड है, लेकिन यह एक सरणी नहीं है, तो इस तरह:

{
    "_id": "efgh",
    "name": "Jerry",
    "myArray": 123
}

फिर सुनिश्चित करें कि यह क्वेरी कंडीशन में परीक्षण करके और का उपयोग करके एक सरणी नहीं है। $set इसके बजाय:

db.collection.update(
    { "_id": "efgh", "myArray.0": { "$exists": false } },
    { "$set": { "myArray": [{ "field1": "abc", "field2": "def" }] } }
)

यह उस तत्व को सुरक्षित रूप से अधिलेखित कर देगा जो आपकी सामग्री वाली एक नई सरणी के साथ एक सरणी नहीं है (डॉट नोटेशन "myArray.0" का अर्थ पहला सरणी तत्व है, जो सत्य नहीं है)। परिणाम मूल जैसा ही है:

{
    "_id": "efgh",
    "name": "Jerry",
    "myArray": [
        {
            "field1": "abc",
            "field2": "def"
        }
    ]
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoDB:अंतराल के लिए समाप्ति समय के रूप में समय मान में मिनटबकेट दिखाएं

  2. क्या कुल मिलाकर एकल परिणाम प्राप्त करना संभव है?

  3. डेटाबेस ऑटोमेशन के साथ शुरुआत कैसे करें

  4. मोंगोडब:पहले कुछ पंक्तियों को क्वेरी करें जहां विशिष्ट कॉलम का योग C . से अधिक या बराबर है

  5. MongoDB+Azure+Android:com.mongodb.WriteConcernException त्रुटि:मास्टर कोड नहीं:10058