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

MongoDB $isNumber

Dari MongoDB 4.4, Anda dapat menggunakan $isNumber operator pipa agregasi untuk memeriksa apakah suatu nilai adalah angka atau bukan.

Ia menerima ekspresi apa pun yang valid, dan mengembalikan true jika ekspresinya adalah angka, false jika tidak.

Khususnya, $isNumber memeriksa apakah ekspresi diselesaikan ke salah satu jenis BSON berikut:

  • Integer
  • Decimal
  • Double
  • Long

Ini mengembalikan true jika tidak.

Ini mengembalikan false jika ekspresi diselesaikan ke jenis BSON lainnya, null , atau bidang yang tidak ada.

Contoh

Misalkan kita memiliki koleksi yang disebut dogs dengan dokumen berikut:

{ "_id" : 1, "name" : "Fetch", "weight" : 30 } 

Kita dapat menggunakan kode berikut untuk melihat bidang mana yang numerik:

db.dogs.aggregate(
  [
    {
      $project:
        { 
          _id: { $isNumber: "$_id" },
          name: { $isNumber: "$name" },
          weight: { $isNumber: "$weight" }
        }
    }
  ]
)

Hasil:

{ "_id" : true, "name" : false, "weight" : true }

Kita dapat melihat bahwa _id dan weight bidangnya numerik, tetapi name bidang bukan (itu string).

Contoh 2

Berikut adalah contoh lain yang berisi berbagai bidang dengan jenis BSON yang berbeda.

Misalkan kita memiliki koleksi yang disebut types dengan dokumen berikut:

{
	"_id" : ObjectId("601738d7c8eb4369cf6ad9de"),
	"double" : 123.75,
	"string" : "123",
	"boolean" : true,
	"date" : ISODate("2020-12-31T23:30:15.123Z"),
	"integer" : 123,
	"long" : NumberLong(123),
	"decimal" : NumberDecimal("123.75"),
	"object" : {
		"a" : 1
	},
	"array" : [
		1,
		2,
		3
	]
}

Untuk tujuan artikel ini, saya memberi nama setiap bidang untuk mencerminkan jenis BSON-nya.

Kita sekarang dapat menggunakan kode berikut untuk mengembalikan true atau false untuk setiap bidang, tergantung pada apakah bidang tersebut berupa angka atau tidak:

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

Hasil:

{
	"_id" : false,
	"double" : true,
	"string" : false,
	"boolean" : false,
	"date" : false,
	"integer" : true,
	"long" : true,
	"decimal" : true,
	"object" : false,
	"array" : false
}

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Memantau &Mengamankan MongoDB dengan ClusterControl Advisors

  2. Memulai dengan MongoDB dan Mongoose

  3. MongoDb:temukan objek yang sangat bersarang dengan $lookup

  4. Mengumumkan ClusterControl 1.7.1:Dukungan untuk PostgreSQL 11 dan MongoDB 4.0, Pemantauan yang Ditingkatkan

  5. Cara Mengamankan Database Open Source Anda dengan ClusterControl