开发者

MongoDB聚合运算符$toBool详解

开发者 https://www.devze.com 2024-08-10 11:46 出处:网络 作者: 原子星
目录MongoDB聚合运算符:$toBool语法使用举例MongoDB聚合运算符:$toBool $toBool聚合运算符将指定的值转换为布尔类型boolean。
目录
  • MongoDB聚合运算符:$toBool
  • 语法
  • 使用
  • 举例

MongoDB聚合运算符:$toBool

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

语法

{
   $toBool: <expression>
}

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

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

{ $convert: { input: <expression>, to: "bool" } }

使用

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

输入类型规则
Array返回ture
Binary dataReturns true
Boolean直接返回
Code返回true
Date返回true
Decimal0返回false,非0返回true
Double0返回false,非0返回true
Integer0返回false,非0返回true
JavaScript返回true
Long0返回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, shippeandroidd: "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, www.devze.com"item" : "nougat", "shipped" : "", "convertedShippedFlag" : false }

到此这php篇关于MongoDB聚合运算符:$toBool的文章就介绍到这了,更多相关MongoDB聚合运算符内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消