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

यदि सरणी में कोई मिलान नहीं मिला तो पहला तत्व लौटाएं

आप नीचे एकत्रीकरण का प्रयास कर सकते हैं

मूल रूप से आपको $filter की जरूरत है products सरणी और जाँच करें $cond अगर इसमें कोई तत्व नहीं है या [] . के बराबर है तो आपको $slice करना होगा products . के पहले तत्व के साथ सरणी।

db.collection.aggregate([
  { "$addFields": {
    "products": {
      "$cond": [
        {
          "$eq": [
            { "$filter": {
              "input": "$products",
              "cond": { "$eq": ["$$this.product_id", 2] }
            }},
            []
          ]
        },
        { "$slice": ["$products", 1] },
        { "$filter": {
          "input": "$products",
          "cond": { "$eq": ["$$this.product_id", 2] }
        }}
      ]
    }
  }}
])

या यहां तक ​​कि $let का उपयोग कर रहे हैं एकत्रीकरण

db.collection.aggregate([
  { "$addFields": {
    "products": {
      "$let": {
        "vars": {
          "filt": {
            "$filter": {
              "input": "$products",
              "cond": { "$eq": ["$$this.product_id", 2] }
            }
          }
        },
        "in": {
          "$cond": [
            { "$eq": ["$$filt", []] },
            { "$slice": ["$products", 1] },
            "$$filt"
          ]
        }
      }
    }
  }}
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कॉच डीबी/काउचबेस/मोंगोडीबी लेनदेन अनुकरण?

  2. MongoTimeoutException:कोई सर्वर मिलान नहीं - MongoDB एटलस

  3. नेवला में नेस्टेड सरणियाँ

  4. MongoDB:किसी सरणी फ़ील्ड में सभी उप-दस्तावेज़ों से फ़ील्ड निकालना

  5. एक MongoConnection के लिए समयबाह्य प्रतीक्षा