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查找连接数组的主要内容,如果未能解决你的问题,请参考以下文章