MongoDB $match and $group problems



我试图获得匹配计数,因为我有一些问题,所以我将把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 } } }
   ]
);

最新更新