【问题标题】:In MongoDB, how can I find a document that is embedded?在 MongoDB 中,如何找到嵌入的文档?
【发布时间】:2023-03-22 14:10:01
【问题描述】:

我在 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"}} )

【问题讨论】:

    标签: mongodb find embed document


    【解决方案1】:

    尝试:

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

    【讨论】:

      【解决方案2】:

      我的代码有问题吗?按回车后什么都没有 起来。

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

      这是预期的行为。

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

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

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

      整个嵌入文档指定过滤器时,您使用以下语法:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-06
        • 2018-09-24
        • 1970-01-01
        • 2018-08-21
        • 2012-07-20
        • 1970-01-01
        • 2014-02-04
        • 1970-01-01
        相关资源
        最近更新 更多