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

क्या `$eq` ऑपरेटर ऐरे डॉट नोटेशन के साथ काम करता है?

सं. $nodes.0 $eq aggregation operator . में सही व्यंजक नहीं है , जब सरणी फ़ील्ड के साथ प्रयोग किया जाता है।

$eq aggregation operator निम्नलिखित वाक्य-विन्यास है:

{ $eq: [ <expression1>, <expression2> ] }

आपको $reduce . का उपयोग करना होगा साथ में $arrayElemAt $eq ऑपरेटर में अपने क्षेत्र को एक्सेस करने के लिए:

क्वेरी1

db.relations.find({
  $expr: {
    $eq: [
      {
        $reduce: {
          input: [
            {
              $arrayElemAt: [
                "$nodes",
                0
              ]
            }
          ],
          initialValue: false,
          in: {
            "$and": [
              {
                $eq: [
                  "$$this.type",
                  "User"
                ]
              },
              {
                $eq: [
                  "$$this.id",
                  UUID("dc20f7c7-bd45-4fc1-9eb4-3604428fa551")
                ]
              }
            ]
          }
        }
      },
      true
    ]
  }
})

खेल का मैदान

वैकल्पिक, $eq ऑपरेटर { <field>: { $eq: <value> } } का उपयोग करके

क्वेरी2

db.relations.find({
  "$and": [
    {
      "nodes.0.type": {
        $eq: "User"
      }
    },
    {
      "nodes.0.id": {
        $eq: UUID("dc20f7c7-bd45-4fc1-9eb4-3604428fa551")
      }
    }
  ]
})

MongoDB खेल का मैदान

यदि आप IXSCAN करना चाहते हैं, तो आप Query2 . का उपयोग कर सकते हैं . आपको निम्नलिखित अनुक्रमणिकाएँ बनानी होंगी:

db.relations.ensureIndex({"nodes.0.id":1})
db.relations.ensureIndex({"nodes.0.type":1})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB 3.2 से डंप, 3.4 के साथ पुनर्स्थापित करें, त्रुटि सूचकांक सुरक्षित =अशक्त

  2. Mongodb में किसी फ़ील्ड में सबस्ट्रिंग कैसे खोजें?

  3. एक अलग समय क्षेत्र पर साल-महीने-दिन के आधार पर कैसे एकत्रित करें

  4. MongoDb :एक क्वेरी के भीतर दो सरणियों से सामान्य तत्व खोजें

  5. MongoDB में नेस्टेड क्वेरी करना