如何在mongodb聚合中查找搜索字符串的出现次数?
Posted
技术标签:
【中文标题】如何在mongodb聚合中查找搜索字符串的出现次数?【英文标题】:How to find number of occurrence of searched string in mongodb aggregation? 【发布时间】:2021-09-29 15:21:57 【问题描述】:我想通过使用 mongodb 聚合来查找字符串中出现的计数或次数。 这些是我的对象数组:-
[
text:'Dummy Lorem Ipsum',
name:'Alex'
,
text:'Other dummy dummy Data dummy',
name:'John'
,
text:'Another dummy dummy data',
name:'Abraham'
,
text:'Last dummy one dummy data dummy',
name:'Bethny'
,
text:'Andrew has no data to display',
name:'Andrew'
,
];
如果我搜索 'dummy' 作为搜索字符串,那么我想要使用 mongodb 聚合这样的输出:-
text:'Dummy Lorem Ipsum',
name:'Alex',
count:1
,
text:'Other dummy dummy Data dummy',
name:'John',
count:3
,
text:'Another dummy dummy data',
name:'Abraham',
count:2
,
text:'Last dummy one dummy data dummy',
name:'Bethny',
count:3
,
text:'Andrew has no data to display',
name:'Andrew',
count:0
,
];
请指导我尽快进行适当的聚合查询来解决这个问题。 提前致谢。
【问题讨论】:
你想不区分大小写搜索,对吧? 到目前为止你做了什么?显示您的代码 是的,我想按不区分大小写的方式进行搜索 @CuongLeNgoc ..我只是通过在匹配查询中搜索正则表达式来做到这一点 @BadPiggie['$match': 'text': '$regex': 'dummy', '$options': 'i']
【参考方案1】:
如果您使用的是 MongoDB 4.2+,您可以使用 $size 和 $regexFindAll 来获取您的计数:
YourModel.aggregate([
"$addFields":
"count":
$size:
$regexFindAll: input: "$text", regex: /dummy/, options: 'i'
])
【讨论】:
以上是关于如何在mongodb聚合中查找搜索字符串的出现次数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 mongodb 聚合中将动态字符串传递给 $regex