Node.js mongodb匹配和组2查询合一
有没有办法组合上面的两个聚合查询 我想统计集合中的所有条目,以及一周内创建的条目。 预期结果:Node.js mongodb匹配和组2查询合一,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,有没有办法组合上面的两个聚合查询 我想统计集合中的所有条目,以及一周内创建的条目。 预期结果: var oneWeekAgo = new Date(); oneWeekAgo.setDate(oneWeekAgo.getDate() - 7); User.aggregate([ { $match: { isAdmin: false, isActive: true } }, { $group: {
var oneWeekAgo = new Date();
oneWeekAgo.setDate(oneWeekAgo.getDate() - 7);
User.aggregate([
{ $match: { isAdmin: false, isActive: true } },
{
$group: {
_id: null,
totalCount: {
$sum: 1
}
}
},
])
User.aggregate([
{ $match: { isAdmin: false, dateCreated: { $gte: oneWeekAgo }, isActive: true } },
{
$group: {
_id: null,
lastWeekTotal: {
$sum: 1
}
}
},
])
您可以像这样将内部
$group
组合在一起
- 运算符有三个参数
($cond:[如果检查条件,则为else])
- 第一部分如果条件使用$and运算符检查您的条件,如果条件为真,则返回
否则1
0
1,0的作用是什么?你能解释一下或者留下一个链接吗?谢谢你@turivishal
[ { _id: null, totalCount: 100 , lastWeekTotal: 10 } ]
User.aggregate([
{
$group: {
_id: null,
totalCount: {
$sum: {
$cond: [
{
$and: [
{ $eq: ["$isAdmin", false] },
{ $eq: ["$isActive", true] }
]
},
1,
0
]
}
},
lastWeekTotal: {
$sum: {
$cond: [
{
$and: [
{ $gte: ["$dateCreated", oneWeekAgo] },
{ $eq: ["$isAdmin", false] },
{ $eq: ["$isActive", true] }
]
},
1,
0
]
}
}
}
}
])