我试图获得匹配计数因为我遇到了一些问题所以我会将find().count()
改为aggregate()
方法。
我的问题是,当我添加我的$ match时,它不会返回任何计数,如果我删除它的工作正常。
db.getCollection('product').aggregate(
[
{ $match: { 'Store.Title': { $regex: '/apc/', $options: 'gi' } } },
{ $group: { _id: null, count: { $sum: 1 } } }
]
)
有人可以帮我解释我在这里做错了什么吗?
答案 0 :(得分:1)
您可以尝试先使用 RegExp
对象创建正则表达式对象,然后在管道中使用它:
var apc_match = new RegExp('apc', 'gi');
db.getCollection('product').aggregate(
[
{ $match: { 'Store.Title': apc_match } },
{ $group: { _id: null, count: { $sum: 1 } } }
]
);
OR
db.getCollection('product').aggregate(
[
{ $match: { 'Store.Title': { $regex: 'apc', $options: 'gi' } } },
{ $group: { _id: null, count: { $sum: 1 } } }
]
);
OR
db.getCollection('product').aggregate(
[
{ $match: { 'Store.Title': /apc/gi } },
{ $group: { _id: null, count: { $sum: 1 } } }
]
);