当前位置: 首页 > 知识库问答 >
问题:

查询同类型嵌套文档的Mongo集合

傅毅然
2023-03-14

我有一个不那么独特的需求,但我只是找到了正确的术语来搜索,因为我只得到如何查询列表/数组字段或嵌套元素的结果。

public class Item {
    private String identity     = null;
    private String name         = null;
    private String type         = null;
    private List<Item> grouping = null;
}
{
   "identity":"ITEM-1",
   "name":"Pack-1",
   "type":"Bundle",
   "grouping":[
      {
         "identity":"ITEM-2",
         "name":"Book",
         "type":"Atomic Unit"
      },
      {
         "identity":"ITEM-3",
         "name":"Stationary",
         "type":"Bundle",
         "grouping":[
            {
               "identity":"ITEM-4",
               "name":"Pen",
               "type":"Atomic Unit"
            },
            {
               "identity":"ITEM-5",
               "name":"Paper",
               "type":"Atomic Unit"
            },
            {
               "identity":"ITEM-6",
               "name":"Paraphernalia",
               "type":"Bundle",
               "grouping":[
                  {
                     "identity":"ITEM-7",
                     "name":"Eraser",
                     "type":"Atomic Unit"
                  },
                  {
                     "identity":"ITEM-8",
                     "name":"Ruler",
                     "type":"Atomic Unit"
                  },
                  {
                     "identity":"ITEM-9",
                     "name":"Compass",
                     "type":"Atomic Unit"
                  }
               ]
            }
         ]
      }
   ]
}

提前感谢所有的帮助。

共有1个答案

壤驷棋
2023-03-14

我的要求是能够搜索书或笔或指南针,必须能够获取记录项目-1。

您可以从mongoshell尝试该查询,它将获取文档:

var SEARCH_ITEMS = [ "Book", "Pen", "Compass" ]
var ATOMIC = "Atomic Unit"

db.collection.find( {
  $or: [
    { "type": ATOMIC, name: { $in: SEARCH_ITEMS } },
    { "grouping.type": ATOMIC, "grouping.name": { $in: SEARCH_ITEMS } },
    { "grouping.grouping.type": ATOMIC, "grouping.grouping.name": { $in: SEARCH_ITEMS } },
    { "grouping.grouping.grouping.type": ATOMIC, "grouping.grouping.grouping.name": { $in: SEARCH_ITEMS } }
  ]
} )
 类似资料:
  • 我是elasticsearch的新手,对如何进行过滤器、查询和聚合有一些想法,但不确定如何解决下面的问题。我希望能够从下面显示的文档中只查询公司的最新交付(日期和crate_quantity)。我不确定如何去做。有没有办法使用最大聚合从每个文档中只提取最近的交付?

  • 是否可以在Firestore中查询嵌套文档,而不向方法?我想通过循环所有用户ID并获取所有用户帖子来获取所有用户创建的所有帖子。 下面是我使用的代码。 谢谢。 不会在主机上显示任何内容。在控制台上显示“未来”的实例。 Firestore结构: 帖子 -

  • 我有一个嵌套文档,如: 据此,https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html,以上内容应匹配: } 鉴于以下情况不应出现:, 但不幸的是两者不匹配。有什么想法吗?

  • 随着ElasticSearch计划删除映射类型,这是否也意味着不再使用嵌套文档和嵌套查询?ElasticSearch将如何支持无类型上下文中的嵌套对象查询? 我正在考虑的功能是能够只返回匹配搜索条件的嵌套数组中的命中。 编辑1:ElasticSearch版本6中的映射查询示例 ElasticSearch 6映射 ElasticSearch 6查询

  • 我是Elasticsearch的新手,如果我问的问题非常简单直接,我会道歉。 我使用以下学生教育细节的映射, 我的数据集中有近15000名学生。文件示例: 我的问题是,我正在尝试做一个简单的查询,以显示那些拥有“BE”学位的学生。但我希望目前拥有BE(工程学士)学位的学生的排名高于同样拥有硕士和博士学位的学生。 从我的例子中,如果我查询“BE”,学生3应该比学生2排名更高。我应该能够根据"endD