IT俱乐部 Python MongoDB聚合运算符$toBool详解

MongoDB聚合运算符$toBool详解

MongoDB聚合运算符:$toBool

$toBool聚合运算符将指定的值转换为布尔类型boolean。

语法

{
   $toBool: 
}

$toBool接受任何有效的表达式。

$toBool$convert表达式的简写形式:

{ $convert: { input: , to: "bool" } }

使用

下表列出了可转换为布尔值的类型:

输入类型 规则
Array 返回ture
Binary data Returns true
Boolean 直接返回
Code 返回true
Date 返回true
Decimal 0返回false,非0返回true
Double 0返回false,非0返回true
Integer 0返回false,非0返回true
JavaScript 返回true
Long 0返回false,非0返回true
MaxKey 返回true
MinKey 返回true
Null 返回null
Object 返回true
ObjectId 返回true
Regular expression 返回true
String 返回true
Timestamp 返回true

下表列出了一些转换为布尔值的示例:

示例 结果
{$toBool: false} false
{$toBool: 1.99999} true
{$toBool: NumberDecimal("5")} true
{$toBool: NumberDecimal("0")} false
{$toBool: 100} true
{$toBool: ISODate("2018-03-26T04:38:28.044Z")} true
{$toBool: "false"} true
{$toBool: ""} true
{$toBool: null} null

举例

使用下面的脚本创建orders集合:

db.orders.insertMany( [
   { _id: 1, item: "apple",  qty: 5, shipped: true },
   { _id: 2, item: "pie",  qty: 10, shipped: 0  },
   { _id: 3, item: "ice cream", shipped: 1 },
   { _id: 4, item: "almonds", qty: 2, shipped: "true" },
   { _id: 5, item: "pecans", shipped: "false" },  //注意:所有的字符串都转换为true
   { _id: 6, item: "nougat", shipped: ""  }       //注意:所有的字符串都转换为true
] )

下面是对订单集合orders的聚合操作,先将已发货的订单shipped转换为布尔值,然后再查找未发货的订单:

//定义shippedConversionStage阶段,添加转换后的发货标志字段`convertedShippedFlag`
//因为所有的字符串都会被转换为true,所以要对字符串"false"做个特殊处理
shippedConversionStage = {
   $addFields: {
      convertedShippedFlag: {
         $switch: {
            branches: [
              { case: { $eq: [ "$shipped", "false" ] }, then: false } ,
              { case: { $eq: [ "$shipped", "" ] }, then: false }
            ],
            default: { $toBool: "$shipped" }
        }
      }
   }
};
// 定义文档过滤阶段,过滤出没有发货的订单
unshippedMatchStage = {
   $match: { "convertedShippedFlag": false }
};
db.orders.aggregate( [
  shippedConversionStage,
  unshippedMatchStage
] )

执行的结果为:

{ “_id” : 2, “item” : “pie”, “qty” : 10, “shipped” : 0, “convertedShippedFlag” : false }
{ “_id” : 5, “item” : “pecans”, “shipped” : “false”, “convertedShippedFlag” : false }
{ “_id” : 6, “item” : “nougat”, “shipped” : “”, “convertedShippedFlag” : false }

到此这篇关于MongoDB聚合运算符:$toBool的文章就介绍到这了,更多相关MongoDB聚合运算符内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/code/python/11220.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部