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

MongoDB $kurangi

Di MongoDB, Anda dapat menggunakan $subtract operator pipa agregasi untuk mengurangi angka dan/atau tanggal.

Khususnya, $subtract dapat melakukan tiga hal berikut:

  • Kurangi dua angka untuk mengembalikan selisihnya
  • Kurangi angka (dalam milidetik) dari tanggal dan kembalikan tanggal yang dihasilkan
  • Kurangi dua tanggal untuk mengembalikan selisih dalam milidetik

$subtract operator menerima nilai sebagai argumen. Argumen dapat berupa ekspresi apa pun yang valid selama argumen tersebut menghasilkan angka dan/atau tanggal. Untuk mengurangi angka dari tanggal, tanggal harus menjadi argumen pertama..

Contoh Data

Misalkan kita memiliki koleksi yang disebut data dengan dokumen berikut:

{ "_id" :1, "a" :20000, "b" :250, "start" :ISODate("2021-01-03T00:00:00Z"), "end" :ISODate("2021- 01-03T23:30:15.100Z")}

Kurangi Bilangan

Kita dapat menggunakan $subtract operator untuk mengurangi a bidang dari b lapangan (atau sebaliknya).

Contoh:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       a: 1, 
       b: 1, 
       result: { 
         $subtract: [ "$a", "$b" ] } } 
         }
   ]
) 

Hasil:

{ "a" :20000, "b" :250, "hasil" :1975 }

Mengurangi Angka dari Tanggal

Jika argumen pertama adalah tanggal dan argumen kedua adalah angka, $subtract operator mengurangi angka dari tanggal dalam milidetik.

Contoh:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       b: 1, 
       start: 1, 
       result: { 
         $subtract: [ "$start", "$b" ] } } 
         }
   ]
).pretty() 

Hasil:

{ "b" :250, "start" :ISODate("2021-01-03T00:00:00Z"), "result" :ISODate("2021-01-02T23:59:59.750Z")} 

Kita dapat melihat bahwa 250 milidetik telah dikurangi dari tanggal.

Saat kita mengurangi angka dari tanggal, tanggal harus menjadi argumen pertama dengan angka sebagai argumen kedua.

Inilah yang terjadi jika kita mengalihkan argumen:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       b: 1, 
       start: 1, 
       result: { 
         $subtract: [ "$b", "$start" ] } } 
         }
   ]
).pretty() 

Hasil:

pengecualian yang tidak tertangkap:Kesalahan:perintah gagal:{ "ok" :0, "errmsg" :"cant $subtract adate from a double", "code" :16556, "codeName" :"Location16556"} :agregat gagal :[email protected]/mongo/shell/utils.js:25:[email protected]/mongo/shell/assert.js:18:[email protected]/mongo/shell/assert.js:618:17example@ sqldat.com/mongo/shell/assert.js:708:[email protected]/mongo/shell/db.js:266:[email protected]/mongo/shell/collection.js:1046:12@(shell )::1:1

Kami mendapatkan kesalahan yang memberi tahu kami bahwa itu tidak dapat mengurangi tanggal dari ganda.

Mengembalikan Selisih Antara Dua Tanggal

Jika kedua argumen adalah tanggal, maka $subtract operator mengembalikan perbedaan antara dua tanggal dalam milidetik.

Contoh:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       start: 1, 
       end: 1,
       result: { 
         $subtract: [ "$end", "$start" ] } } 
         }
   ]
).pretty() 

Hasil:

{ "mulai" :ISODate("2021-01-03T00:00:00Z"), "end" :ISODate("2021-01-03T23:30:15.100Z"), "hasil" :NumberLong(84615100 )}

Jika kita mengganti tanggal, hasilnya menjadi nilai negatif:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       start: 1, 
       end: 1,
       result: { 
         $subtract: [ "$start", "$end" ] } } 
         }
   ]
).pretty() 

Hasil:

{ "mulai" :ISODate("2021-01-03T00:00:00Z"), "end" :ISODate("2021-01-03T23:30:15.100Z"), "result" :NumberLong(- 84615100)}

Melewati Jumlah Argumen yang Salah

$subtract operator menerima tepat dua argumen. Melewati jumlah argumen yang salah menghasilkan kesalahan.

Contoh:

db.data.aggregate(
   [
     { $project: { 
       result: { 
         $subtract: [ "$a" ] } } 
         }
   ]
) 

Hasil:

pengecualian yang tidak tertangkap:Kesalahan:perintah gagal:{ "ok" :0, "errmsg" :"$project tidak valid ::disebabkan oleh ::Ekspresi $subtract membutuhkan tepat 2 argumen. 1 diteruskan.", "kode" :16020, "codeName" :"Location16020"} :agregat gagal :[email protected]/mongo/shell/utils.js:25:[email protected]/mongo/shell/assert.js:18:14example@sqldat .com/mongo/shell/assert.js:618:[email protected]/mongo/shell/assert.js:708:[email protected]/mongo/shell/db.js:266:[email protected] /mongo/shell/collection.js:1046:12@(kulit)::1:1

Meneruskan Nilai Null

Melewati dua null nilai menghasilkan null dikembalikan.

Contoh:

db.data.aggregate(
   [
     { $project: { 
       result: { 
         $subtract: [ null, null ] } } 
         }
   ]
) 

Hasil:

{ "_id" :1, "result" :null }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kueri MongoDB / Pymongo dengan Datetime

  2. Memulai dengan MongoDB dan Mongoose

  3. Cara mendapatkan kembali dokumen Asli setelah agregasi

  4. Menjalankan MongoDB dengan Manajer Operasi

  5. Driver MongoDB C# - Abaikan bidang pada penjilidan