如何找到退休减去年龄小于 10 的记录
db.users.insert({
user_id: "bcd001",
age: 56,
retirement: 65,
status: "A"
})
你有几个选择,要么你使用聚合框架,要么你做这样的事情
db.users.find({$where: '(this.retirement - this.age > 10)'})
更多关于聚合框架的信息(即使这对你的情况来说似乎有点过分):
(考虑在插入文档时将retiring
计算包含在文档中(预先计算))User
您也可以使用 MapReduce,这可能比使用更有效,$where
具体取决于您使用结果的方式(另外,结果将被保留)。下面是一个使用 MongoDB shell 的示例:
var map=function(){
if (this.retirement - this.age < 10) {
emit(this.user_id, this.user_id, this.retirement - this.age);
}
};
var reduce=function(key, values) {
return Array.sum(values);
};
然后执行:
db.users.mapReduce(map, reduce, {out: 'retiring' })
结果:
> db.retiring.find()
{ "_id" : "bcd001", "value" : 9 }
然后,您可能希望使用此处描述的增量更新模式。