Използвайте нотация с точки:
Когато полето съдържа вграден документ, заявката може или да посочи точно съвпадение във вградения документ, или да посочи съвпадение чрез отделни полета във вградения документ, използвайки нотацията с точки.
db.coll.find({
"accounts._id" :ObjectId("5546329a470019850084a611")
})
Ако трябва да изведете само частта от масив, където имате своя _id, трябва да използвате долар в проекцията
Позиционният оператор $ ограничава съдържанието на резултатите от заявката, за да съдържа само първия елемент, съответстващ на документа на заявката.
и вашата заявка ще изглежда така:
db.coll.find({
"accounts._id" :ObjectId("5546329a470019850084a611")
}, {
"accounts.$.": 1
})
P.S. ако имате нужда от изхода, както във вашите модифицирани въпроси, използвайте това:
db.coll.find({
"accounts._id" :ObjectId("5546329a470019850084a611")
}, {
accounts : 0
})