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

MongoDB:नेस्टेड सरणी फ़िल्टरिंग के साथ खोजें और खोजें

मैं TL;DR चूंकि यह एक सवारी का नरक बन गया। मैंने कोशिश की है $elemMatch , मैंने कोशिश की है $redact ($$वर्तमान और $$रूट के साथ भी), मैंने $map . की कोशिश की है , मैंने एकत्रीकरण ढांचे की कोशिश की है, मैंने कोशिश की है $project .

आप इसके बारे में यहां सब कुछ पढ़ सकते हैं:https://www.devsbedevin.net/mongodb-find-findone-with-nested-array-filtering-finally/

TL;DR

समाधान सरणी को फ़िल्टर करने और परिणामों के साथ टिप्पणियों की संपत्ति को ओवरराइड करने के लिए एकत्रीकरण ढांचे का उपयोग करना प्रतीत होता है। यह सुनने में जितना आसान लगता है उससे कहीं ज्यादा आसान है:

db.getCollection('posts').aggregate(
    {$match: {"author.id": authorId}},
    {$addFields : {"comments":{$filter:{ // We override the existing field!
        input: "$comments",
        as: "comment",
        cond: {$eq: ["$$comment.state.deleted", false]}
    }}}}
);

परिणाम:

{
  "author": {},
  "message": "This is post1",
  "comments": [
    {
      "message": "Im number 1!!!",
      "state": {
        "deleted": false
      }
    },
    {
      "message": "tHIS IS GREAT!",
      "state": {
        "deleted": false
      }
    },
    {
      "message": "I can type better than you guys",
      "state": {
        "deleted": false
      }
    }
  ]
},
{
  "author": {},
  "message": "This is post 2",
  "comments": [
    {
      "message": "I wanna have your children",
      "state": {
        "deleted": false
      }
    }
  ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेस्टेड सरणी के भीतर केवल मिलान किए गए उप-दस्तावेज़ तत्वों को वापस करें

  2. MongoDB $toBool

  3. PostgreSQL बनाम MongoDB

  4. MongoDB $प्रथम एकत्रीकरण पाइपलाइन ऑपरेटर

  5. नोड जेएस में रेगेक्स के साथ मोंगो क्वेरी एक चर पर चल रही है