MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Utilizzo della funzione MongoDB .findOne() con il valore del documento nidificato

Quando si esegue la corrispondenza con un array, se si specifica la query in questo modo:

{ exercises: { _id: exerciseID } }

MongoDB tenta di eseguire un corrispondenza esatta nel documento . Quindi, in questo caso, MongoDB corrisponderebbe solo ai documenti negli exercises array della forma esatta { _id: ObjectId("...") } . Perché i documenti negli exercises hanno altri campi, questo non produrrà mai una corrispondenza, anche se il _id le s sono le stesse.

Quello che vuoi fare invece è interroga un campo dei documenti nell'array . Il documento di query completo sarebbe quindi simile a questo:

{
  user: user.id,
  "exercises._id": exerciseID
}