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