I have multilingual data in MongoDB with format like
{
"_id" : ObjectId("56ebd619e07925a2286c1c3c"),
"translation" : [
{
"language" : "english",
"name" : "shahid Afridi",
"desc" : "batsmen",
"player" : "capten"
},
{
"language" : "spanish",
"name" : "shhid Ofridi",
"desc" : "batsmeen",
"player" : "capteen"
},
{
"language" : "french",
"name" : "hhid afrede is best",
"desc" : "batsmin",
"player" : "captn"
}
]
}
suppose is a Spanish user comes then my query is
db.getCollection('t.m').find({$text: { $search: "best",$language: "es", }})
the problem is it search in whole translation array (not in french) i also tried that is only search and return only specific language document in array i also tried based on other SO question but no luck i.e
db.getCollection('t.m').find({$text: { $search: "capten",$language: "es", },translation: {$elemMatch: {language: "english"}}})
my question has to parts
- query only one language in translation i.e search performed only in spanish or english
- and after query return only specific object from translation array not whole translation array
remember i create text indexes for name, desc and player. any help will be greatly appreciated.