MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB $toBool

Dari MongoDB 4.0, Anda dapat menggunakan $toBool operator pipeline agregasi untuk mengonversi nilai menjadi boolean.

Saat Anda mengonversi nilai ke boolean, hasilnya akan menjadi true atau false , tergantung pada nilai masukan.

Umumnya, untuk nilai numerik, ini akan mengembalikan false jika nilainya nol (0 ), dan true untuk nilai lainnya.

Untuk nilai string, ObjectId, dan Date, akan selalu mengembalikan true .

Contoh

Misalkan kita memiliki koleksi yang disebut types dan berisi dokumen-dokumen berikut:

{
	"_id" : ObjectId("60133e50c8eb4369cf6ad9d9"),
	"double" : 123.75,
	"string" : "123",
	"boolean" : true,
	"date" : ISODate("2020-12-31T23:30:15.123Z"),
	"integer" : 123,
	"long" : NumberLong(123),
	"decimal" : NumberDecimal("123.75")
}
{
	"_id" : ObjectId("60133e50c8eb4369cf6ad9da"),
	"double" : 0,
	"string" : "",
	"boolean" : false,
	"date" : null,
	"integer" : 0,
	"long" : NumberLong(0),
	"decimal" : NumberDecimal("0.0")
}

Kita dapat menggunakan $toBool operator untuk mengonversi semua tipe tersebut menjadi boolean. Jika inputnya adalah boolean, maka itu hanya mengembalikan boolean.

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          objectId: { $toBool: "$_id" },
          double: { $toBool: "$double" },
          string: { $toBool: "$string" },
          boolean: { $toBool: "$boolean" },
          date: { $toBool: "$date" },
          integer: { $toBool: "$integer" },
          long: { $toBool: "$long" },
          decimal: { $toBool: "$decimal" }
        }
    }
  ]
).pretty()

Hasil:

{
	"objectId" : true,
	"double" : true,
	"string" : true,
	"boolean" : true,
	"date" : true,
	"integer" : true,
	"long" : true,
	"decimal" : true
}
{
	"objectId" : true,
	"double" : false,
	"string" : true,
	"boolean" : false,
	"date" : null,
	"integer" : false,
	"long" : false,
	"decimal" : false
}

Kita dapat melihat bahwa semua nilai dalam dokumen pertama mengembalikan true , tetapi banyak di dokumen kedua mengembalikan false . Juga, nilai tanggal mengembalikan null karena itu null untuk memulai.

Kesalahan

Jika Anda menemukan kesalahan, coba gunakan $convert operator alih-alih $toBool . $convert operator memungkinkan Anda menangani kesalahan tanpa memengaruhi keseluruhan operasi agregasi.

$toBool operator sama dengan menggunakan $convert operator untuk mengonversi nilai menjadi boolean.

Berikut ini contoh penggunaan $convert untuk mengonversi string menjadi boolean::

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          result: 
          {
            $convert: { 
              input: "$string", 
              to: "bool",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Hasil:

{ "result" : true } 

Lihat MongoDB $convert untuk lebih banyak contoh.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mengubah jenis bidang?

  2. MongoDB :Kerangka kerja agregasi :Dapatkan dokumen bertanggal terakhir per ID pengelompokan

  3. Data pegas dan mongodb - putar kembali sederhana dengan pegas dalam @Transactional

  4. Apakah ada cara sederhana untuk mengekspor data dari aplikasi meteor yang digunakan?

  5. Buka:Buat antarmuka io.Writer untuk masuk ke database mongodb