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

MongoDB $keInt

Dari MongoDB 4.0, Anda dapat menggunakan $toInt operator pipa agregasi untuk mengonversi nilai menjadi bilangan bulat.

Sebagian besar tipe dapat dikonversi menjadi integer, tetapi nilai ObjectId dan Date tidak dapat.

Saat Anda mengonversi boolean ke bilangan bulat, jika boolean true , maka bilangan bulatnya adalah 1 . Jika boolean false , maka bilangan bulatnya adalah 0 .

Nilai numerik seperti ganda dan desimal dipotong sesuai kebutuhan.

Contoh

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

{
	"_id" : ObjectId("601340eac8eb4369cf6ad9db"),
	"double" : 123.75,
	"string" : "123",
	"boolean" : true,
	"date" : ISODate("2020-12-31T23:30:15.123Z"),
	"integer" : 123,
	"long" : NumberLong(123),
	"decimal" : NumberDecimal("123.75")
}

Kita dapat menggunakan $toInt operator untuk mengonversi bidang tersebut (kecuali untuk _id dan date bidang) ke bilangan bulat. Jika input sudah berupa bilangan bulat, maka itu hanya mengembalikan bilangan bulat.

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

Hasil:

{
	"double" : 123,
	"string" : 123,
	"boolean" : 1,
	"integer" : 123,
	"long" : 123,
	"decimal" : 123
}

Perhatikan bahwa saya mengecualikan date dan _id bidang dari operasi, karena jenis ini tidak dapat dikonversi ke bilangan bulat.

Kesalahan

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

$toInt operator sama dengan menggunakan $convert operator untuk mengonversi nilai menjadi bilangan bulat.

Berikut ini contoh penggunaan $convert untuk mencoba mengonversi tanggal menjadi bilangan bulat (yang menghasilkan kesalahan):

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

Hasil:

{ "result" : "An error occurred" } 

Menggunakan $convert memungkinkan kami untuk menentukan pesan kesalahan yang akan digunakan saat kesalahan terjadi, dan itu tidak menghentikan seluruh operasi agregasi.

Lihat MongoDB $convert untuk lebih banyak contoh.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $project:Apakah mungkin untuk mengakses properti dari hasil ekspresi hanya dalam satu tahap?

  2. MongoDB $first Aggregation Pipeline Operator

  3. Menghapus referensi satu-satu dan satu-banyak - Mongoose

  4. Dasar-dasar Menyebarkan Kumpulan Replika MongoDB dan Pecahan Menggunakan Wayang

  5. Bagaimana cara saya melakukan kueri NOT IN di Mongo?