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

MongoDB $ sqrt

Trong MongoDB, $sqrt toán tử đường ống tổng hợp tính toán căn bậc hai của một số dương và trả về kết quả là một nhân đôi.

$sqrt chấp nhận bất kỳ biểu thức hợp lệ nào phân giải thành một số không âm.

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" : 100 }
{ "_id" : 2, "data" : 250 }

Chúng ta có thể sử dụng $sqrt toán tử để trả về căn bậc hai của data lĩnh vực:

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 1, 2 ] } } },
    { $project: { 
        squareRoot: { $sqrt: "$data" }
      }
    }
  ]
)

Kết quả:

{ "_id" : 1, "squareRoot" : 10 }
{ "_id" : 2, "squareRoot" : 15.811388300841896 }

Giá trị phủ định

$sqrt toán tử chỉ chấp nhận các số không âm.

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

{ "_id" : 3, "data" : -100 }

Hãy áp dụng $sqrt toán tử đối với tài liệu đó:

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 3 ] } } },
    { $project: { 
        squareRoot: { $sqrt: "$data" }
      }
    }
  ]
)

Kết quả:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "$sqrt's argument must be greater than or equal to 0",
	"code" : 28714,
	"codeName" : "Location28714"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

Lỗi này cho chúng tôi biết rằng đối số của $ sqrt phải lớn hơn hoặc bằng 0 .

Giá trị rỗng

Giá trị rỗng trả về null khi sử dụng $sqrt nhà điều hành.

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

{ "_id" : 4, "data" : null }

Hãy áp dụng $sqrt toán tử đối với tài liệu đó:

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 4 ] } } },
    { $project: { 
        squareRoot: { $sqrt: "$data" }
      }
    }
  ]
)

Kết quả:

{ "_id" : 4, "squareRoot" : null }

Chúng ta có thể thấy rằng kết quả là null .

Giá trị NaN

Nếu đối số phân giải thành NaN , $sqrt trả về NaN .

Ví dụ:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        squareRoot: { $sqrt: "$data" * 1 }
      }
    }
  ]
)

Kết quả:

{ "_id" : 1, "squareRoot" : NaN }

Các trường không tồn tại

Nếu $sqrt toán tử được áp dụng cho một trường không tồn tại, null được trả lại.

Ví dụ:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        squareRoot: { $sqrt: "$age" }
      }
    }
  ]
)

Kết quả:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Xóa khoảng trắng (đầu và cuối) khỏi giá trị chuỗi

  2. Không thể kết nối với mongodb bằng ip máy

  3. Lập kế hoạch &Quản lý các lược đồ trong MongoDB (Ngay cả khi Nó không có Schemaless)

  4. mô-đun pymongo - dnspython phải được cài đặt để sử dụng mongodb + srv:// URIs

  5. có cách nào để tự động tạo ObjectId khi Mô hình mongoose mới không?