MongoDB聚合运算符$toBool详解

 更新时间:2024年05月05日 11:49:30   作者:原子星  
$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, 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聚合运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MongoDB db.serverStatus()输出内容中文注释

    MongoDB db.serverStatus()输出内容中文注释

    这篇文章主要介绍了MongoDB db.serverStatus()输出内容中文注释,本文收集了2个版本的中文注释来讲解,需要的朋友可以参考下
    2014-08-08
  • MongoDB分片详解

    MongoDB分片详解

    本文分享了MongoDB分片详细介绍,分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用,
    2018-03-03
  • 分享MongoDB修改oplog大小的4种方法

    分享MongoDB修改oplog大小的4种方法

    这篇文章主要介绍了分享MongoDB修改oplog大小的4种方法,文章基于MongoDB修改oplog大小展开其方法的介绍,需要的小伙伴可以参考一下
    2022-04-04
  • window下mongodb在dos下服务器启动及连接

    window下mongodb在dos下服务器启动及连接

    这篇文章主要介绍了window下mongodb在dos下服务器启动及连接的相关资料,需要的朋友可以参考下
    2017-06-06
  • 浅析MongoDB之安全认证

    浅析MongoDB之安全认证

    MongoDB是基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。默认情况下,MongoDB实例启动运行时是没有启用用户访问权限控制的,在实例本机服务器上都可以随意连接到实例进行各种操作,MongoDB不会对连接客户端进行用户验证
    2021-06-06
  • MongoDB中的MapReduce简介

    MongoDB中的MapReduce简介

    这篇文章主要介绍了MongoDB中的MapReduce简介,MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE),需要的朋友可以参考下
    2015-05-05
  • MongoDB运行状态监控、性能分析工具mongostat详解

    MongoDB运行状态监控、性能分析工具mongostat详解

    这篇文章主要介绍了MongoDB运行状态监控、性能分析工具mongostat详解,mongostat是mongdb自带的状态检测工具,在命令行下使用,它会间隔固定时间获取mongodb的当前运行状态,并输出,本文详细讲解了它的使用,需要的朋友可以参考下
    2015-07-07
  • 对标mongodb存储类JSON数据文档统计分析详解

    对标mongodb存储类JSON数据文档统计分析详解

    这篇文章主要介绍了对标mongodb存储类JSON数据文档统计分析,只是介绍了简单的查询,其实针对各种统计分析场景,clickhouse提供了超级多的统计分析函数、窗口函数等等,当然针对数组的数据类型也有很多的统计分析函数,需要的朋友可以参考下
    2022-06-06
  • mongodb中使用distinct去重的简单方法

    mongodb中使用distinct去重的简单方法

    怎么在mongodb中实现类似于SQL中distinct的功能,查询某一个字段所有的值,今天我们就来探讨下这个问题。
    2015-05-05
  • springboot整合mongodb

    springboot整合mongodb

    这篇文章主要介绍了springboot如何整合mongodb,mongodb的安装和使用,感兴趣的同学可以参考阅读本文
    2023-03-03

最新评论