【问题标题】:Creating query criteria for finding documents has desired element inside of array of array in MongoDB创建用于查找文档的查询条件在 MongoDB 的数组数组中具有所需的元素
【发布时间】:2019-01-27 19:05:13
【问题描述】:

我正在使用 Spring Boot 实现一个应用程序,并第一次使用 MongoDB 作为数据库。

我需要为 MongoDB 的查询创建一个条件,但是我不知道该怎么做。我的文档如下所示:

...
"mylists" : [
               {
                    "subListName" : "Main",
                    "list" : [
                            {
                                    "name" : "abc",
                                    "amount" : "3"
                            },
                            {
                                    "name" : "adf",
                                    "amount" : "1"
                            },
                    ]
            },
            {
                    "subListName" : "Additional1",
                    "list" : [
                            {
                                    "name" : "xyz",
                                    "amount" : "1"
                            }, 
                            {
                                    "name" : "dbr",
                                    "amount" : "1"
                            }
                    ]
            }
        ],
...

我想获取其中一个列表中包含“abc”的文档。如您所见,mylists 数组包含 1 个或多个 subList,每个 subList 又包含 1 个或多个对象。

对于常规的一维数组,我可以创建这样的查询:

criteria.add(Criteria.where("list").in('abc'), "i"));

我的清单也在另一个大清单中。 abc 也在“名称”字段中。所以我不知道该怎么做。

感谢任何帮助。

【问题讨论】:

    标签: java mongodb spring-boot


    【解决方案1】:

    使用 MongoDB 的 official driver 很简单。我使用 v. 3.8.2。因为只匹配一个字段,所以可以使用$elemMatch 或直接查找。以下是示例。

    collection.find(elemMatch("mylists.list", eq("name", "abc")))
    

    collection.find(eq("mylists.list.name", "abc"))
    

    欲了解更多信息,请查看Find Operations tutorial

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      • 2022-01-17
      相关资源
      最近更新 更多