我尝试计算一个文档与我收藏中的其他文档相比的匹配分数。它适用于 mapReduce,但我想知道这是否可以使用聚合(据说快 10 倍)。
我的文件如下:
{
name: "John",
age: 27,
track: {
section: 12,
start: 1,
end: 4
}
}
我试图计算的分数很简单min(start_track_1, start_track_2) - max(stop_track_1, stop_track_2)
所以为了计算约翰的分数,我试图创建我的管道,但它已经在第二个操作员处失败了:
db.test.aggregate(
{ $match: {
'age' : {$gte: 22, $lte: 34},
'track.section': 12,
}
},
{ $project: {
_id : 1,
name : 1,
min_end: {$min: ["$track.end", 4]},
max_start: {$max: ["$track.start", 1]}
}
}
)
贝壳回答:"errmsg" : "exception: invalid operator '$min'"
问题是,我虽然 $min 和 $max 运算符在数组上工作,就像 $add 和 $subtract...
所以现在我被困住了。我认为 $group 中使用的 $min 和 $max 在这里无法帮助我......
任何想法 ?