Använd punktnotation:
När fältet innehåller ett inbäddat dokument kan en fråga antingen ange en exakt matchning på det inbäddade dokumentet eller ange en matchning av enskilda fält i det inbäddade dokumentet med hjälp av punktnotationen.
db.coll.find({
"accounts._id" :ObjectId("5546329a470019850084a611")
})
Om du bara behöver mata ut den del av en array där du har ditt _id måste du använda dollar i projektion
Den positionella $-operatorn begränsar innehållet i ett från frågeresultatet till att endast innehålla det första elementet som matchar frågedokumentet.
och din fråga skulle se ut så här:
db.coll.find({
"accounts._id" :ObjectId("5546329a470019850084a611")
}, {
"accounts.$.": 1
})
P.S. om du behöver utdata som i dina modifierade frågor, använd detta:
db.coll.find({
"accounts._id" :ObjectId("5546329a470019850084a611")
}, {
accounts : 0
})