Como solo te enfrentas a uno campo, solo tiene que expresar la ruta a su campo usando la notación de puntos:
> db.user.find({"profile.wishlist._id": 2})
Como se explica en Documentación de MongoDB
, para arreglos (como wishlist
) esto coincidirá con un documento si cualquiera el subdocumento en la matriz coincide con el valor del campo.
Tenga en cuenta que si necesita hacer coincidir contra varios campos, debe usar:
$elemMatch
si todos los campos coincidentes deben pertenecer al mismo subdocumento;- o múltiples campos expresados usando la notación de puntos si los diversos campos no necesitan coincidir con el mismo subdocumento.
Compare el resultado de esas dos consultas para comprender esto:
> db.user.find({"profile.wishlist._id": 2, "profile.wishlist.name": "a1"})
// ^ ^^
// will return your document even if the was no
// subdocument having both _id=2 and name=a1
> db.user.find({"profile.wishlist": {$elemMatch: { _id: 2, name: "a1"}}})
// ^ ^^
// no result as there was no subdocument
// matching _both_ _id=2 and name=a1