Trong MongoDB, $floor
toán tử đường ống tổng hợp trả về số nguyên lớn nhất nhỏ hơn hoặc bằng số được chỉ định.
$floor
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ố.
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" : 8.99 } { "_id" : 2, "data" : 8.01 } { "_id" : 3, "data" : -8.99 } { "_id" : 4, "data" : -8.01 } { "_id" : 5, "data" : 8 }
Chúng ta có thể sử dụng $floor
toán tử để trả về số nguyên lớn nhất nhỏ hơn hoặc bằng data
lĩnh vực:
db.test.aggregate(
[
{ $project: {
data: 1,
floor: { $floor: "$data" }
}
}
]
)
Kết quả:
{ "_id" : 1, "data" : 8.99, "floor" : 8 } { "_id" : 2, "data" : 8.01, "floor" : 8 } { "_id" : 3, "data" : -8.99, "floor" : -9 } { "_id" : 4, "data" : -8.01, "floor" : -9 } { "_id" : 5, "data" : 8, "floor" : 8 }
Trong ví dụ này, data
trường là giá trị ban đầu và floor
trường là giá trị sàn của giá trị đó.
Giá trị rỗng
Giá trị rỗng trả về null
khi sử dụng $floor
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" : 6, "data" : null }
Hãy áp dụng $floor
toán tử đối với tài liệu đó:
db.test.aggregate(
[
{ $match: { _id: 6 } },
{ $project: {
floor: { $floor: "$data" }
}
}
]
)
Kết quả:
{ "_id" : 6, "floor" : 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
, $floor
trả về NaN
.
Ví dụ:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
floor: { $floor: "$data" * 1 }
}
}
]
)
Kết quả:
{ "_id" : 1, "floor" : NaN }
Các trường không tồn tại
Nếu $floor
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: {
floor: { $floor: "$name" }
}
}
]
)
Kết quả:
{ "_id" : 1, "floor" : null }