Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$toBool(集計)

項目一覧

  • 定義
  • 動作
$toBool

値をブール値に変換します。

$toBool の構文は次のとおりです。

{
$toBool: <expression>
}

$toBoolは任意の有効な式を受け入れます。

$toBool は次の $convert 式の省略形です。

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

Tip

以下も参照してください。

次の表でブール値に変換できる入力型を一覧にしています。

入力タイプ
動作

配列

true を返します

バイナリ データ

true を返します

ブール値

何も起こりません。ブール値を返します。

コード

true を返します

日付

true を返します

小数点

Returns true if not zero
Return false if zero

Double

Returns true if not zero
Return false if zero

整数

Returns true if not zero
Return false if zero

JavaScript

true を返します

Long

Returns true if not zero
Return false if zero

Max key

true を返します

MinKey

true を返します

null

値が null を返します

オブジェクト

true を返します

ObjectId

true を返します

正規表現

true を返します

文字列

true を返します

タイムスタンプ

true を返します

MongoDB のデータ型の詳細については、「BSON types」をご覧ください。

次の表でブール値への変換例を一覧にしています。

結果

{$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" }, // Note: All strings convert to true
{ _id: 6, item: "nougat", shipped: "" } // Note: All strings convert to true
] )

ordersコレクションに対する次の集計操作では、未払いの注文を検索する前にshippedをブール値に変換します。

// Define stage to add convertedShippedFlag field with the converted shipped value
// Because all strings convert to true, include specific handling for "false" and ""
shippedConversionStage = {
$addFields: {
convertedShippedFlag: {
$switch: {
branches: [
{ case: { $eq: [ "$shipped", "false" ] }, then: false } ,
{ case: { $eq: [ "$shipped", "" ] }, then: false }
],
default: { $toBool: "$shipped" }
}
}
}
};
// Define stage to filter documents and pass only the unshipped orders
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 }

注意

変換操作でエラーが発生した場合、集計操作は停止し、エラーがスローされます。この動作をオーバーライドするには、代わりに $convert を使用します。

戻る

$tanh

項目一覧