sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:Hur man hittar ett dokument med ett id inuti ett kapslat dokument

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
 })


  1. Redis - Användarnamn, lösenord och db?

  2. Kontrollera om mongodb-databasen finns?

  3. Mongoose, CastError:Cast to Array misslyckades för värde när man försökte spara en modell som innehåller en modell

  4. Hur konfigurerar man vårsessioner för att fungera med Redis i xml?