我有以下猫鼬模式
Order.aggregate([
{ $match: { $and: [
{status: 'COMPLETE'},
{premises: mongoose.Types.ObjectId(premisesId)},
{createdAt:{
$gte: startOfToday,
$lt: endOfToday
}}
]}},
{
$group: {
_id: {hour: {$hour: "$createdAt"}},
count: { $sum: 1 },
sales: { $sum: '$subtotal'}
}
},
{
$sort: {
"_id.hour": 1
}
}
]).exec(function(err, orders){
//do something
})
运行简单的查找查询会按预期返回小计值(例如11.99)。
当我运行聚合查询时,小计值不会像我预期的那样除以100。
number_of_scroll = 1857
while number_of_scroll > 0:
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
number_of_scroll = number_of_scroll-1
这是预期的聚合行为吗?
有没有办法可以强制聚合查询触发getter。
答案 0 :(得分:0)
简短回答:是的,这是预期的行为。
更长的答案需要引用Model.aggregate
的mongoose文档:
参数不会转换为模型的模式,因为$ project运算符允许在管道的任何阶段重新定义文档的“形状”,这可能使文档保持不兼容的格式。
基本上这意味着当使用聚合(包括getter)时,不会应用mongoose允许通过使用模式的任何魔法。您需要在管道中包含该转换。