MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB:So finden Sie ein Dokument anhand einer ID in einem verschachtelten Dokument

Punktnotation verwenden:

Wenn das Feld ein eingebettetes Dokument enthält, kann eine Abfrage entweder eine genaue Übereinstimmung mit dem eingebetteten Dokument oder eine Übereinstimmung mit einzelnen Feldern im eingebetteten Dokument mithilfe der Punktnotation angeben.

db.coll.find({
   "accounts._id" :ObjectId("5546329a470019850084a611")
})

Wenn Sie nur den Teil eines Arrays ausgeben müssen, in dem Sie Ihre _id haben, müssen Sie Dollar in der Projektion

verwenden

Der positionelle $-Operator begrenzt den Inhalt eines aus den Abfrageergebnissen so, dass er nur das erste Element enthält, das mit dem Abfragedokument übereinstimmt.

und Ihre Abfrage würde wie folgt aussehen:

db.coll.find({
   "accounts._id" :ObjectId("5546329a470019850084a611")
}, {
   "accounts.$.": 1
})

P.S. Wenn Sie die Ausgabe wie in Ihren modifizierten Fragen benötigen, verwenden Sie diese:

db.coll.find({
   "accounts._id" :ObjectId("5546329a470019850084a611")
 }, {
   accounts : 0
 })