MongoDB 查找连接数组
MongoDB find join array
我有一个集合,其中的数据看起来有点像这样
{
"part": [
{ "a": "1", "b": "a" },
{ "a": "23", "b": "b" },
{ "a": "4", "b": "c" },
]
}
我想要一种搜索文档的方法,其中所有 a
部分的连接等于我要查找的搜索。
例如 1234
应该匹配上面的文档,但是 124
不应该。
MongoDB 这可能吗?
您可以使用 $reduce
的聚合来连接字符串,然后 $match
来过滤您的字符串。
这是 playground.
您可以使用聚合框架来完成:
- $match with $eq - 仅过滤
part
数组的串联 a
属性的文档等于输入字符串。
- $reduce 和 $concat - 连接每个文档的
part
数组的所有 a
属性.
db.collection.aggregate([
{
"$match": {
"$expr": {
"$eq": [
"1234",
{
"$reduce": {
"input": "$part",
"initialValue": "",
"in": {
"$concat": [
"$$value",
"$$this.a"
]
}
}
}
]
}
}
}
])
我有一个集合,其中的数据看起来有点像这样
{
"part": [
{ "a": "1", "b": "a" },
{ "a": "23", "b": "b" },
{ "a": "4", "b": "c" },
]
}
我想要一种搜索文档的方法,其中所有 a
部分的连接等于我要查找的搜索。
例如 1234
应该匹配上面的文档,但是 124
不应该。
MongoDB 这可能吗?
您可以使用 $reduce
的聚合来连接字符串,然后 $match
来过滤您的字符串。
这是 playground.
您可以使用聚合框架来完成:
- $match with $eq - 仅过滤
part
数组的串联a
属性的文档等于输入字符串。 - $reduce 和 $concat - 连接每个文档的
part
数组的所有a
属性.
db.collection.aggregate([
{
"$match": {
"$expr": {
"$eq": [
"1234",
{
"$reduce": {
"input": "$part",
"initialValue": "",
"in": {
"$concat": [
"$$value",
"$$this.a"
]
}
}
}
]
}
}
}
])