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

मैं एकाधिक संग्रह के लिए मोंगोडब कुल फ़िल्टर कैसे कर सकता हूं?

मैंने आपकी पिछली समस्या को प्रश्न में समझाया है . चूंकि इनवॉइसइन्फो एक सरणी है और invoiceData invoiceInfo . के अंदर भी एक सरणी , हम मानचित्र और फ़िल्टर का उपयोग करते हैं। फिर हमें invoiceData . की खाली सरणी को बाहर करना होगा . (यह पिछले चरण में भी किया जा सकता है जैसे कि फ़िल्टर-मैप-> फ़िल्टर, लेकिन यह लंबा हो सकता है, इसलिए मैंने इसे अगले चरण में उपयोग किया)

ये रहा कोड

db.bookings.aggregate([
  {
    "$match": {
      "PaymentStatus": { $ne: "Delivered" }
    }
  },
  {
    $set: {
      "BookingData.products": {
        "$filter": {
          "input": "$BookingData.products",
          "cond": {
            $and: [
              { $ne: [ "$$this.ProductID", undefined ] },
              { $ne: [ "$$this._id", null ] },
              { $ne: [ "$$this.IsDeliveryFailed", "Yes" ] }
            ]
          }
        }
      }
    }
  },
  {
    "$lookup": {
      "from": "invoices",
      "localField": "Invoices",
      "foreignField": "_id",
      "as": "invoiceInfo"
    }
  },
  {
    $set: {
      invoiceInfo: {
        $map: {
          input: "$invoiceInfo",
          as: "info",
          in: {
            InvoiceData: {
              $filter: {
                input: "$$info.InvoiceData",
                as: "data",
                "cond": {
                  $and: [
                    { $ne: [ "$$data.InvoiceID", undefined ] },
                    { $ne: [ "$$data.InvoiceID", null ] },
                    { $ne: [ "$$data.IsPaymentFailed", "Yes" ] }
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  {
    $set: {
      invoiceInfo: {
        $filter: {
          input: "$invoiceInfo",
          cond: { $ne: [ "$$this.InvoiceData", [] ] }
        }
      }
    }
  },
  {
    $match: {
      $expr: {
        $or: [
          { $ne: [ "$BookingData.products", [] ] },
          { $ne: [ "$invoiceInfo", [] ] }
        ]
      }
    }
  }
])

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

आशा है कि यह आपकी मदद करेगा। यह वह समय है जब आपको अपनी आवश्यकता के आधार पर खेलने/काम करने की आवश्यकता होती है। कभी-कभी आपको डेमो में वर्तमान स्थान से पहले या बाद में देखने की आवश्यकता होती है




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB API का उपयोग करके Azure CosmosDB में विभाजित संग्रह में कई दस्तावेज़ कैसे हटाएं?

  2. ऑटो इंक्रीमेंट फ़ील्ड कैसे बनाएं

  3. व्युत्पन्न प्रश्न DBRef के साथ काम नहीं कर रहे हैं

  4. MongoDB:उप-दस्तावेज़ अपडेट कर रहा है

  5. जावास्क्रिप्ट से मोंगोडब में आंतरिक क्वेरी कैसे पास करें?