当前位置: 代码网 > it编程>数据库>Nosql > MongoDB聚合运算符$toBool详解

MongoDB聚合运算符$toBool详解

2024年05月26日 Nosql 我要评论
mongodb聚合运算符:$tobool$tobool聚合运算符将指定的值转换为布尔类型boolean。语法{ $tobool: <expression>}$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聚合运算符内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com