在MongoDB中,如何找到嵌入的文档?

In MongoDB, how can I find a document that is embedded?

我在 MongoDB 中创建了一个名为“KPOP”的嵌入文档,我想找到值为“BTS: Fake Love”的字段

这是嵌入文档:

> use TestMongoDB
  switched to db TestMongoDB
> db.KPOP.find().pretty()
{
    "_id" : ObjectId("5fd83447066c904c1365771a"),
    "KPOP" : {
            "SHINee" : "Dream Girl",
            "Girl's Generation" : "I Got a Boy",
            "BTS" : "Fake Love"
    }
} 

我的代码有问题吗?我按回车后,什么也没有显示。

> db.KPOP.find( {"KPOP": {"BTS": "Fake Love"}} )

试试:

db.KPOP.find( {"KPOP.BTS": "Fake Love"} )

Is something wrong with my code? After I press enter, nothing shows up.

db.KPOP.find( {"KPOP": {"BTS": "Fake Love"}} )

这是预期的行为。

如果您想查询嵌入文档的单个字段,您需要使用以下语法 - 使用点 (.) 表示法。例如,这两个查询 return 文档:

db.test.find({"KPOP.SHINee": "Dream Girl"})
db.test.find({"KPOP.SHINee": "Dream Girl", "KPOP.BTS": "Fake Love" })

在上述查询中,您可以按任意顺序指定一个、两个或所有字段

whole 嵌入文档指定过滤器时使用以下语法:

db.test.find({ KPOP: { SHINee: "Dream Girl", "Girl's Generation": "I Got a Boy", BTS: "Fake Love" } })

在这种情况下,请注意嵌入文档的字段顺序必须与原始文档的顺序相同;即 SHINee"Girl's Generation"BTS(在 KPOP 内)。并且,您需要指定 所有 嵌入文档的字段。