Show
> db.u.find()
> db.u.insert({spaces:[ 'foo' ], i18n:[{l: 'en' ,x: 1 }, {l: 'de' , x: 3 }]})
WriteResult({ "nInserted" : 1 })
> db.u.insert({spaces:[ 'bar' ], i18n:[{l: 'en' ,x: 2 }, {l: 'de' , x: 4 }]})
WriteResult({ "nInserted" : 1 })
> db.u.find({spaces: 'bar' , 'i18n.l' : 'en' }, { 'i18n.$' : 1 , spaces: 1 })
{ "_id" : ObjectId( "58ad69e98d62dac604e9b186" ), "spaces" : [ "bar" ], "i18n" : [ { "l" : "en" , "x" : 2 } ] }
> db.u.find({spaces: 'bar' , 'i18n.l' : 'de' }, { 'i18n.$' : 1 , spaces: 1 })
{ "_id" : ObjectId( "58ad69e98d62dac604e9b186" ), "spaces" : [ "bar" ], "i18n" : [ { "l" : "en" , "x" : 2 } ] }
// just above, it doesn't give the right language
> db.u.drop()
true
> db.u.find()
> db.u.insert({spaces: 'foo' , i18n:[{l: 'en' ,x: 1 }, {l: 'de' , x: 3 }]})
WriteResult({ "nInserted" : 1 })
> db.u.insert({spaces: 'bar' , i18n:[{l: 'en' ,x: 2 }, {l: 'de' , x: 4 }]})
WriteResult({ "nInserted" : 1 })
> db.u.find({spaces: 'bar' , 'i18n.l' : 'de' }, { 'i18n.$' : 1 , spaces: 1 })
{ "_id" : ObjectId( "58ad6afbd58e080a9eb86638" ), "spaces" : "bar" , "i18n" : [ { "l" : "de" , "x" : 4 } ] }
> db.u.find({spaces: 'bar' , 'i18n.l' : 'en' }, { 'i18n.$' : 1 , spaces: 1 })
{ "_id" : ObjectId( "58ad6afbd58e080a9eb86638" ), "spaces" : "bar" , "i18n" : [ { "l" : "en" , "x" : 2 } ] }