C'est le comportement attendu.
Si vous souhaitez interroger le ou les champs individuels d'un document intégré, vous devez utiliser la syntaxe suivante - en utilisant le point (.
). Par exemple, ces deux requêtes renvoient le document :
db.test.find({"KPOP.SHINee": "Dream Girl"})
db.test.find({"KPOP.SHINee": "Dream Girl", "KPOP.BTS": "Fake Love" })
Dans les requêtes ci-dessus, vous pouvez spécifier un, deux ou tous les champs et dans n'importe quel ordre.
Vous utilisez la syntaxe suivante lorsque vous spécifiez le filtre pour le tout document intégré :
db.test.find({ KPOP: { SHINee: "Dream Girl", "Girl's Generation": "I Got a Boy", BTS: "Fake Love" } })
Dans ce cas, notez que l'ordre des champs du document intégré doit être le même que celui du document original ; c'est-à-dire SHINee
, "Girl's Generation"
et BTS
(dans le KPOP
). Et, vous devez spécifier tous les champs du document intégré.