我有一个项目的集合可以upvoted或downvoted。如何在MongoDB汇总框架中处理零除
{"_id" : 1, "name": "foo", "upvotes" : 30, "downvotes" : 10}
{"_id" : 2, "name": "bar", "upvotes" : 20, "downvotes" : 0}
{"_id" : 3, "name": "baz", "upvotes" : 0, "downvotes" : 0}
我想用零来使用聚合计算质量
db.items.aggregate([
{"$project":
{
"name": "$name",
"upvotes": "$upvotes"
"downvotes": "$downvotes",
"quality": {"$divide":["$upvotes", "$downvotes"]}
}
},
{"$sort": {"quality":-1}}
]);
显然,这是不行的,因为分工。我需要实现适当的调节:
如果upvotes = 0和downvotes == 0则质量= upvotes 如果upvotes和downvotes均为0,那么质量是0
我试图调整downvotes 1使用!三元成语。但无济于事。
db.items.aggregate([
{"$project":
{
"name": "$name",
"upvotes": "$upvotes",
"downvotes": "$downvotes" ? "$downvotes": 1
}
},
{"$project":
{
"name": "$name",
"upvotes": "$upvotes"
"downvotes": "$downvotes",
"quality": {"$divide":["$upvotes", "$downvotes"]}
}
},
{"$sort": {"quality":-1}}
]);
如何在mongodb聚合框架中集成这种调节?
这是它,我只是改变了 “N/A” 到“$ upvotes ”。无论如何,$ cond现在是我的朋友。 – gwaramadze