MongoDB查找连接数组

Posted

技术标签:

【中文标题】MongoDB查找连接数组【英文标题】:MongoDB find join array 【发布时间】:2022-01-21 09:34:37 【问题描述】:

我有一个数据集,看起来像这样


  "part": [
     "a": "1", "b": "a" ,
     "a": "23", "b": "b" ,
     "a": "4", "b": "c" ,
  ]

我想要的是一种搜索文档的方法,其中所有 a 部分的连接等于我正在寻找的搜索。

例如1234 应该匹配上面的文档,但124 不应该。

MongoDB 可以做到这一点吗?

【问题讨论】:

【参考方案1】:

您可以使用聚合框架来做到这一点:

$match$eq - 仅过滤 part 数组的串联 a 属性等于输入字符串的文档。 $reduce$concat - 连接每个文档的 part 数组的所有 a 属性。
db.collection.aggregate([
  
    "$match": 
      "$expr": 
        "$eq": [
          "1234",
          
            "$reduce": 
              "input": "$part",
              "initialValue": "",
              "in": 
                "$concat": [
                  "$$value",
                  "$$this.a"
                ]
              
            
          
        ]
      
    
  
])

Working example

【讨论】:

【参考方案2】:

您可以使用聚合与$reduce 加入字符串,然后使用$match 过滤您的字符串。 这是playground。

【讨论】:

以上是关于MongoDB查找连接数组的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb最大连接数优化

MongoDB 最大连接数 设置失效的异常分析

查询以查找 mongodb 图形集合中的连接组件?

关于MongoDB最大连接数的查看与修改

为什么MongoDB连接数满了?

为什么MongoDB连接数满了?