MongoDB:使用正则表达式聚合数组元素
Posted
技术标签:
【中文标题】MongoDB:使用正则表达式聚合数组元素【英文标题】:MongoDB: Aggregate on array elements with regex 【发布时间】:2022-01-18 22:55:32 【问题描述】:我使用 MongoDB v 4.2.17,其中有一组文档,例如:
[
a: 'a',
b: 'b',
c: ['apples', 'grapes']
,
a: 'a',
b: 'b',
c: ['elephants', 'apes']
]
我需要编写一个查询来返回所有文档,其中数组c
的任何元素都与提供的正则表达式匹配。
我有一个匹配数组中第一个元素的解决方案:
db.collection.aggregate([$match: 'c.0': $regex: 'apes' ])
此查询成功匹配数组中第一个元素与正则表达式匹配的文档。
我需要编写一个 聚合 来获取数组中 任何元素 与正则表达式匹配的文档。
我试过了(没用)
db.collection.aggregate([$match: 'c.$': $regex: 'apes' ])
我需要使用regex
和聚合,所以简单的find
将不起作用。
提前致谢。
【问题讨论】:
【参考方案1】:只需使用值c
,而不是c.0
或c.$
。
db.collection.aggregate([
$match:
"c":
$regex: "apes"
])
查看this example
【讨论】:
以上是关于MongoDB:使用正则表达式聚合数组元素的主要内容,如果未能解决你的问题,请参考以下文章