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

MongoDB $ chữ

Trong MongoDB, $literal toán tử đường ống tổng hợp trả về một giá trị mà không cần phân tích cú pháp.

Nó chấp nhận bất kỳ biểu thức hợp lệ nào và trả về biểu thức chưa được phân tích.

$literal toán tử có thể hữu ích khi bạn có một giá trị mà MongoDB có thể vô tình hiểu là một biểu thức, nhưng bạn không muốn nó.

Ví dụ:nếu bạn có số tiền bao gồm ký hiệu đô la, MongoDB có thể vô tình hiểu đó là tên trường. Bạn có thể sử dụng $literal để ngăn MongoDB thông dịch các biểu thức như vậy.

Ví dụ

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

{ "_id" : 1, "name" : "Homer" }

Dưới đây là một ví dụ về việc áp dụng $literal :

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 1 ] } } },
    {
      $project:
        { 
          _id: 0,
          interpreted: "$name",
          literal: { $literal: "$name" }
        }
    }
  ]
)

Kết quả:

{ "interpreted" : "Homer", "literal" : "$name" }

Trong ví dụ này, chúng tôi trả về giá trị của name bằng cách sử dụng $name để tham khảo nó.

Chúng tôi cũng trả về giá trị chữ $name , mà không cần MongoDB diễn giải nó có nghĩa là name lĩnh vực:

Ví dụ 2

Giả sử bộ sưu tập của chúng tôi chứa tài liệu sau:

{ "_id" : 2, "a" : 10, "b" : 5 }

Đây là một ví dụ khác về việc sử dụng $literal :

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 2 ] } } },
    {
      $project:
        { 
          _id: 0,
          interpreted: { $multiply: [ "$a", "$b" ] },
          literal: { $literal: { $multiply: [ "$a", "$b" ] } }
        }
    }
  ]
)

Kết quả:

{ "interpreted" : 50, "literal" : { "$multiply" : [ "$a", "$b" ] } }

Trong trường hợp này, trường đầu tiên được trả về chứa kết quả của $multiply toán tử so với ab các lĩnh vực.

Trường thứ hai chỉ xuất ra giá trị chữ mà chúng tôi đã cung cấp cho $literal nhà điều hành.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. tại sao tôi không thể khởi động mongodb

  2. Không kết nối được với 127.0.0.1:27017, lý do:errno:111 Kết nối bị từ chối

  3. ghi lại tất cả các truy vấn mongoose kích hoạt trong ứng dụng

  4. Phép chiếu MongoDB của các mảng lồng nhau

  5. findOne Subdocument ở Mongoose