Ich habe eine Sammlung von Elementen, die Upvoted oder Downvoted werden können.Wie behandelt man Division durch Null in MongoDB Aggregation Framework
{"_id" : 1, "name": "foo", "upvotes" : 30, "downvotes" : 10}
{"_id" : 2, "name": "bar", "upvotes" : 20, "downvotes" : 0}
{"_id" : 3, "name": "baz", "upvotes" : 0, "downvotes" : 0}
Ich möchte Aggregation verwenden, um die Qualität
db.items.aggregate([
{"$project":
{
"name": "$name",
"upvotes": "$upvotes"
"downvotes": "$downvotes",
"quality": {"$divide":["$upvotes", "$downvotes"]}
}
},
{"$sort": {"quality":-1}}
]);
Offensichtlich berechnen dies nicht funktioniert, weil die Division durch Null. Ich muss entsprechende Konditionierung implementieren:
wenn upvotes = 0 und downvotes == 0, dann ist die Qualität = upvotes wenn upvotes und beide sind 0 downvotes dann die Qualität ist 0
Ich versuchte downvotes von 1 Tweaking mit! ternäres Idiom. Aber ohne Erfolg.
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}}
]);
Wie kann ich diese Art von Konditionierung in mongodb aggregation framework integrieren?
Das ist es, ich "N/A" nur auf „$ upvotes ". Wie auch immer, $ Cond ist jetzt mein Freund. – gwaramadze