我有一个 mongodb 查询,我正在尝试使用匹配运算符将两个不同的日期匹配到“createdAt”字段。
{
$match: {
$expr: {
$and: [
{
$eq: [
{
$dateFromParts: {
'month': { $month: '$createdAt' },
'year': { $year: '$createdAt' }
}
},
{
$dateFromParts: {
'month': { $month: prevMonth },
'year': { $year: prevMonth }
}
}
],
},
{
$eq: [
{
$dateFromParts: {
'month': { $month: '$createdAt' },
'year': { $year: '$createdAt' }
}
},
{
$dateFromParts: {
'month': { $month: lastMonth },
'year': { $year: lastMonth }
}
}
]
}
]
}
}
}
当我这样做时,返回一个空数组。如果我删除 $and 运算符并且只匹配上面使用的两个 $eq 运算符表达式中的任何一个,我会得到一个填充数组。
My question is quite literally the same as Match multiple conditions in an aggregate under expressions ,唯一的区别是他们查询了 $lt 与 $eq 配对。我的哪里有两个 $eq 查询来匹配 $prevMonth 和 $lastMonth 变量。