Get particular element from mongoDB array with $text search Get particular element from mongoDB array with $text search mongodb mongodb

Get particular element from mongoDB array with $text search


I'm reading your post as you want to limit your full text search based on language selection from sub document.You can do it using aggregation framework, assuming you have MongoDB 3.2+

If MongoDB 3.2+

db.doc.aggregate([{$match:{$text: {$search:"shahid Afridi"}}},{$project:   {translation:     {$filter:       {input: "$translation", as:"tr", cond: { $eq : ["$$tr.language", "english"]}}    }  }}])

MongoDB < 3.2

db.doc.aggregate([    {$match:{$text: {$search:"shahid Afridi"}}},    {$unwind:"$translation"},    {$match:{"translation.language":"english"}}])

This query will emit:

{     "_id" : ObjectId("56ebd619e07925a2286c1c3c"),     "translation" : [        {            "language" : "english",             "name" : "shahid Afridi",             "desc" : "batsmen",             "player" : "capten"        }    ]}