MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Usando a função .findOne() do MongoDB com valor de documento aninhado


Ao fazer a correspondência com uma matriz, se você especificar a consulta assim:
{ exercises: { _id: exerciseID } }

O MongoDB tenta fazer um correspondência exata no documento . Portanto, neste caso, o MongoDB corresponderia apenas a documentos nos exercises array da forma exata { _id: ObjectId("...") } . Como os documentos nos exercises tiver outros campos, isso nunca produzirá uma correspondência, mesmo se o _id s são iguais.

O que você quer fazer é consultar um campo dos documentos na matriz . O documento de consulta completo ficaria assim:
{
  user: user.id,
  "exercises._id": exerciseID
}