Det är det förväntade beteendet.
Om du vill fråga ett inbäddat dokuments individuella fält måste du använda följande syntax - med hjälp av punkten (.
) notation. Till exempel returnerar båda dessa frågor dokumentet:
db.test.find({"KPOP.SHINee": "Dream Girl"})
db.test.find({"KPOP.SHINee": "Dream Girl", "KPOP.BTS": "Fake Love" })
I ovanstående frågor kan du ange ett, två eller alla fälten och i valfri ordning.
Du använder följande syntax när du anger filtret för helheten inbäddat dokument:
db.test.find({ KPOP: { SHINee: "Dream Girl", "Girl's Generation": "I Got a Boy", BTS: "Fake Love" } })
Observera i det här fallet att ordningen på fälten av det inbäddade dokumentet måste vara samma som originaldokumentet. dvs. SHINee
, "Girl's Generation"
och BTS
(inom KPOP
). Och du måste ange alla fälten i det inbäddade dokumentet.