MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB $ ifNull

Trong MongoDB, $ifNull là một toán tử đường ống tổng hợp cho phép bạn chỉ định một giá trị để sử dụng thay cho null .

Cách hoạt động của nó là bạn cung cấp một biểu thức và một biểu thức thay thế. Nếu biểu thức cho giá trị khác rỗng, biểu thức đó sẽ được trả về. Nhưng nếu biểu thức đánh giá thành giá trị null, $ifNull trả về giá trị của biểu thức thay thế.

Giá trị null bao gồm các trường hợp giá trị không xác định hoặc trường bị thiếu.

Ví dụ

Giả sử chúng ta có một bộ sưu tập được gọi là test với các tài liệu sau:

{ "_id" : 1, "data" : 250 }
{ "_id" : 2, "data" : -250 }
{ "_id" : 3, "data" : "Bucket" }
{ "_id" : 4, "data" : 0 }
{ "_id" : 5, "data" : ISODate("2021-01-03T23:30:15.100Z") }
{ "_id" : 6, "data" : null }
{ "_id" : 7, "data" : Infinity }
{ "_id" : 8, "data" : -Infinity }

Đây là những gì sẽ xảy ra nếu chúng tôi sử dụng $ifNull toán tử trên data lĩnh vực:

db.test.aggregate(
   [
     {
       $project:
          {
            result: { $ifNull: [ "$data", "Value not provided" ] }
          }
     }
   ]
)

Kết quả:

{ "_id" : 1, "result" : 250 }
{ "_id" : 2, "result" : -250 }
{ "_id" : 3, "result" : "Bucket" }
{ "_id" : 4, "result" : 0 }
{ "_id" : 5, "result" : ISODate("2021-01-03T23:30:15.100Z") }
{ "_id" : 6, "result" : "Value not provided" }
{ "_id" : 7, "result" : Infinity }
{ "_id" : 8, "result" : -Infinity }

Chúng ta có thể thấy rằng chỉ có một trường có giá trị null và do đó, nó là trường duy nhất trả về "Value not provided" .

Trường không xác định và trường bị thiếu

Như đã đề cập, các giá trị không xác định và các trường bị thiếu được coi là giá trị rỗng.

Giả sử chúng tôi thêm các tài liệu sau vào bộ sưu tập của mình:

{ "_id" : 9, "data" : undefined }
{ "_id" : 10, "name" : "Homer" }

Trong trường hợp này, tài liệu 9 có undefined trong trường dữ liệu, nhưng tài liệu 10 thậm chí không có data trường.

Đây là những gì sẽ xảy ra khi chúng tôi áp dụng $ifNull đối với các tài liệu đó:

db.test.aggregate(
   [
     { $match: { _id: { $in: [ 9, 10 ] } } },
     {
       $project:
          {
            result: { $ifNull: [ "$data", "Value not provided" ] }
          }
     }
   ]
)

Kết quả:

{ "_id" : 9, "result" : "Value not provided" }
{ "_id" : 10, "result" : "Value not provided" }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách tạo chỉ mục phân biệt chữ hoa chữ thường trong MongoDB

  2. Mongoose:Nhận danh sách người dùng đầy đủ

  3. Làm cách nào để liệt kê tất cả cơ sở dữ liệu MongoDB trong Node.js?

  4. MongoDB riêng biệt ()

  5. Điền vào một mô hình mongoose với một trường không phải là id