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

नेवले पॉप्युलेट का उपयोग करके डेटा फ़िल्टर करें

कृपया इसे आजमाएं:

जैसा कि मैंने पहले ही सुझाव दिया है कि आप इसका उपयोग कर सकते हैं:

Database.find({})
    .populate({ path: 'components', match: { name: /antr/i }, select: 'name -_id' })
    .exec((err, data) => { console.log(err); res.json(data); });

चूंकि आप match . में फ़िल्टर क्वेरी के कारण खाली सरणी देख रहे हैं जो घटक संग्रह w.r.t में उपयुक्त दस्तावेज़ नहीं ढूंढता है। डेटाबेस दस्तावेज़ के घटक सरणी में ObjectIds, यह सामान्य है। हो सकता है कि आप उन्हें कोड में फ़िल्टर कर सकते हैं, जैसा कि आप उस तरह से नहीं देख रहे हैं, आप mongoDB के $lookup का उपयोग कर सकते हैं एकत्रीकरण ढांचे से जो .populate() . के बराबर है नेवले से।

Database.aggregate(
    [{
        $lookup: {
            from: "components",
            "let": { "ids": "$components" },
            pipeline: [
                { $match: { $expr: { $in: ['$_id', '$$ids'] } } }],
            as: "dbComponentsArray"
        }
    }, { $unwind: '$dbComponentsArray' }, { $match: { 'dbComponentsArray.name': /antr/i } },
    { $group: { _id: '$_id', dbComponentsArray: { $push: '$dbComponentsArray' }, data: { $first: '$$ROOT' } } }, { $addFields: { 'data.dbComponentsArray': '$dbComponentsArray' } },
    { $replaceRoot: { 'newRoot': '$data' } }])

संग्रह में नमूना डेटा:

घटक :

/* 1 */
{
    "_id" : ObjectId("5d481cd098ba991c0857959f"),
    "name" : "antracito",
    "updatedAt" : ISODate("2019-08-05T12:10:56.777Z"),
    "__v" : 0
}

/* 2 */
{
    "_id" : ObjectId("5d481cd098ba991c0857958f"),
    "name" : "anacito",
    "updatedAt" : ISODate("2019-08-05T12:10:56.777Z"),
    "__v" : 0
}

/* 3 */
{
    "_id" : ObjectId("5d481cd098ba991c0857951f"),
    "name" : "antracito",
    "updatedAt" : ISODate("2019-08-05T12:10:56.777Z"),
    "__v" : 0
}

/* 4 */
{
    "_id" : ObjectId("5d481cd098ba991c0857952f"),
    "name" : "anacito",
    "updatedAt" : ISODate("2019-08-05T12:10:56.777Z"),
    "__v" : 0
}

डेटाबेस :

/* 1 */
{
    "_id" : ObjectId("5d4979d52a17d10a6c8de81b"),
    "components" : [ 
        ObjectId("5d481cd098ba991c0857951f"), 
        ObjectId("5d481cd098ba991c0857952f"), 
        ObjectId("5d481cd098ba991c0857953f"), 
        ObjectId("5d481cd098ba991c0857959f")
    ]
}

आउटपुट :

/* 1 */
{
    "_id" : ObjectId("5d4979d52a17d10a6c8de81b"),
    "components" : [ 
        ObjectId("5d481cd098ba991c0857951f"), 
        ObjectId("5d481cd098ba991c0857952f"), 
        ObjectId("5d481cd098ba991c0857953f"), 
        ObjectId("5d481cd098ba991c0857959f")
    ],
    "dbComponentsArray" : [ 
        {
            "_id" : ObjectId("5d481cd098ba991c0857959f"),
            "name" : "antracito",
            "updatedAt" : ISODate("2019-08-05T12:10:56.777Z"),
            "__v" : 0
        }, 
        {
            "_id" : ObjectId("5d481cd098ba991c0857951f"),
            "name" : "antracito",
            "updatedAt" : ISODate("2019-08-05T12:10:56.777Z"),
            "__v" : 0
        }
    ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पॉप्युलेट के जवाब में पथ का नाम कैसे बदलें

  2. $अनवाइंड करने से पहले जांचें कि क्या उप दस्तावेज़ खाली नहीं है

  3. mongodb प्रति फ़ील्ड/कुंजी के अलग-अलग मानों की संख्या की गणना करता है

  4. नेवला, mongoDB में स्थिति के आधार पर आबाद करें

  5. MongoDB सबफील्ड की सूची प्रक्षेपण