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

मोंगोडब एक संग्रह से अन्य संग्रह में सभी क्षेत्रों में फ़ील्ड पर रेगेक्स जांचें

मैच एक्सप्रेशन के अंदर रेगेक्स ऑपरेटर में दस्तावेज़ में संग्रहीत रेगेक्स फ़ील्ड को संदर्भित करना संभव नहीं है।

तो यह वर्तमान संरचना के साथ मोंगो पक्ष में नहीं किया जा सकता है।

$lookup समानता की स्थिति के साथ अच्छा काम करता है। तो एक विकल्प (निक के सुझाव के समान) एक अतिरिक्त फ़ील्ड शामिल करने के लिए आपके पोस्ट संग्रह को अपडेट करेगा keywords प्रत्येक शीर्षक के लिए (कीवर्ड मानों की सरणी जिस पर इसे खोजा जा सकता है)।

db.users.aggregate([
   {$lookup: {
          from: "posts",
          localField: "userregex",
          foreignField: "keywords",
          as: "posts"
        }
    }
])

उपर्युक्त क्वेरी ऐसा कुछ करेगी (3.4 से काम करती है)।

keywords: { $in: [ userregex.elem1, userregex.elem2, ... ] }.

दस्तावेज़ों से

ऐसा लगता है कि पिछले संस्करणों (3.2 पर परीक्षण किया गया) केवल तभी मेल खाएगा जब सरणी में समान क्रम हो, मान और सरणी की लंबाई समान हो।

नमूना इनपुट:

उपयोगकर्ता

db.users.insertMany([
  {
    "name": "James",
    "userregex": [
      "another",
      "here"
    ]
  },
  {
    "name": "John",
    "userregex": [
      "another",
      "string"
    ]
  }
])

पोस्ट

db.posts.insertMany([
  {
    "title": "a string here",
    "keyword": [
      "here"
    ]
  },
  {
    "title": "another string here",
    "keywords": [
      "another",
      "here"
    ]
  },
  {
    "title": "one string here",
    "keywords": [
      "string"
    ]
  }
])

नमूना आउटपुट:

[
  {
    "name": "James",
    "userregex": [
      "another",
      "here"
    ],
    "posts": [
      {
        "title": "another string here",
        "keywords": [
          "another",
          "here"
        ]
      },
      {
        "title": "a string here",
        "keywords": [
          "here"
        ]
      }
    ]
  },
  {
    "name": "John",
    "userregex": [
      "another",
      "string"
    ],
    "posts": [
      {
        "title": "another string here",
        "keywords": [
          "another",
          "here"
        ]
      },
      {
        "title": "one string here",
        "keywords": [
          "string"
        ]
      }
    ]
  }
]


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MySQL प्रतिकृति (और अन्य) के लिए विफलता - क्या इसे स्वचालित किया जाना चाहिए?

  2. डेटाटेबल पर प्रदर्शित करने के लिए विभिन्न नेवला परिणाम को एक JSON ऐरे में कैसे संयोजित करें?

  3. किसी संग्रह के अंदर किसी सरणी से किसी ऑब्जेक्ट को निकालना

  4. MongoDB संग्रह में फ़ील्ड का नाम बदलें

  5. फ्लास्क में JSON पोस्ट करने से 400 खराब अनुरोध त्रुटि होती है