外部函数不适用于聚合框架。一切都会在输入时解析为BSON,因此不允许Javascript或其他任何内容。从BSON“运算符”定义到本机C
++代码实现,基本上都将这些处理完毕,因此它确实非常快。
这就是将您期望的逻辑“转换”为聚合框架可以处理的逻辑。其实有“逻辑”运营商,如$or
和$and
在这方面的工作:
db.collection.aggregate([ { "$project": { "_id": 1, "status": {"$cond": [ { "$or": [ // Your first set of rules requires "false" for "flag1" or // "flag2" and "true" for "flag3" { "$and": [ { "$not": [ { "$or": [ "$flag1", "$flag2" ] }, ]}, "$flag3" ]}, // Your second set of rules requires "true" for "flag1" or // "flag2" and "false" for "flag3" { "$and": [ { "$or": [ "$flag1", "$flag2" ] }, { "$not": [ "$flag3" ] } ]}, ]}, "ok", "broken"] } }}])
因此,没有外部功能,只需使用聚合框架提供的运算符来实现逻辑。除了基本的逻辑实现外,还有$not
“逆向”的斜率,$cond
它充当“三元”,以便提供与
true/false评估结果不同的结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)