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

MongoDB Object.bsonSize ()

Trong MongoDB, bạn có thể sử dụng Object.bsonSize() để trả về kích thước của tài liệu tính bằng byte.

Ví dụ

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

{
	"_id" : 1,
	"name" : "Boardwalk Social",
	"location" : {
		"type" : "Point",
		"coordinates" : [
			-16.919297718553366,
			145.77675259719823
		]
	},
	"categories" : [
		"Bar",
		"Restaurant",
		"Hotel"
	],
	"reviews" : [
		{
			"name" : "Steve",
			"date" : "20 December, 2020",
			"rating" : 5,
			"comments" : "Great vibe."
		},
		{
			"name" : "Lisa",
			"date" : "25 October, 2020",
			"rating" : 3,
			"comments" : "They just raised their prices :("
		},
		{
			"name" : "Kim",
			"date" : "21 October, 2020",
			"rating" : 4,
			"comments" : "Nice for Friday happy hour"
		}
	]
}

Chúng ta có thể thấy rằng location trường chứa một tài liệu. Và reviews trường chứa một mảng tài liệu.

Đầu tiên, hãy sử dụng Object.bsonSize() để trả về kích thước của tài liệu cấp cao nhất.

Object.bsonsize(db.bars.findOne())

Kết quả:

502

Chúng ta có thể thấy rằng toàn bộ tài liệu là 502 byte.

Lưu ý rằng tôi đang sử dụng findOne() chứ không phải find() . Lý do cho điều này là find() trả về một con trỏ, thay vì chính tài liệu. findOne() mặt khác, phương pháp này trả về tài liệu thực và do đó kết quả của nó phải chính xác.

Tài liệu con

Hãy sử dụng Object.bsonSize() để kiểm tra kích thước của location trường.

Chúng ta có thể sử dụng ký hiệu dấu chấm để nhận giá trị của location lĩnh vực:

Object.bsonsize(
  db.bars.findOne().location
  )

Kết quả:

61

Trong trường hợp này, tài liệu là 61 byte.

Để chắc chắn, đây là những gì chúng tôi đã thực sự chuyển đến Object.bsonSize() phương pháp:

db.bars.findOne().location

Kết quả:

{
	"type" : "Point",
	"coordinates" : [
		-16.919297718553366,
		145.77675259719823
	]
}

Vì vậy, đó là tài liệu 61 byte.

Tài liệu trong Mảng

Chúng tôi cũng có thể truy xuất kích thước của tài liệu là phần tử của một mảng.

Ví dụ:

Object.bsonsize(
  db.bars.findOne().reviews[0]
  )

Kết quả:

91

Mảng MongoDB dựa trên 0, vì vậy tài liệu này là bài đánh giá đầu tiên.

Chúng ta có thể tự chạy đối số để xem toàn bộ tài liệu:

db.bars.findOne().reviews[0]

Kết quả:

{
	"name" : "Steve",
	"date" : "20 December, 2020",
	"rating" : 5,
	"comments" : "Great vibe."
}

Phép chiếu

Chúng ta có thể sử dụng Object.bsonSize() để trả về kích thước của tài liệu được trả về bởi một phép chiếu. Để làm điều này, chúng tôi chỉ cần cung cấp phép chiếu trong truy vấn của mình.

Ví dụ:

Object.bsonsize(
    db.bars.findOne(
      {},
      {
        _id: 0,
        location: 1
      }
    )
)

Kết quả:

76

Trong trường hợp này, chúng tôi nhận được kích thước là 76.

Bạn có thể nhận thấy rằng trong ví dụ trước đó của chúng tôi, location trường là 61 byte, nhưng bây giờ là 76.

Chuyện gì đang xảy ra?

Chà, khi chúng tôi sử dụng phép chiếu, giống như chúng tôi trong ví dụ này, chúng tôi thực sự đang trả về một tài liệu bên ngoài có chứa location tên trường cũng như giá trị của nó.

Đây là những gì mà phép chiếu này trả về:

db.bars.findOne(
    {},
    {
      _id: 0,
      location: 1
    }
  )

Kết quả:

{
	"location" : {
		"type" : "Point",
		"coordinates" : [
			-16.919297718553366,
			145.77675259719823
		]
	}
}

Tuy nhiên, trong ví dụ trước đó của chúng tôi, truy vấn của chúng tôi như sau:

db.bars.findOne().location

Và trả lại cái này:

{
	"type" : "Point",
	"coordinates" : [
		-16.919297718553366,
		145.77675259719823
	]
}

Vì vậy, ví dụ về phép chiếu của chúng tôi đã trả về một tài liệu lớn hơn, do thực tế là nó đã trả về cả tên trường và giá trị. Và ví dụ trước đó của chúng tôi đã trả về một tài liệu nhỏ hơn do thực tế là nó chỉ trả về giá trị.

Đường ống tổng hợp

Khi sử dụng đường dẫn tổng hợp, bạn có thể sử dụng $bsonSize toán tử để lấy kích thước của tài liệu.

Bạn cũng có thể sử dụng $binarySize toán tử để nhận kích thước của một chuỗi hoặc nội dung của giá trị nhị phân tính bằng byte.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB giới hạn kích thước lưu trữ?

  2. Cách tốt nhất để thực hiện tìm kiếm toàn văn trong MongoDB và Mongoose

  3. Mẹo quản lý sao lưu MongoDB cho các cụm bị chia nhỏ

  4. Meteor có những cơ chế bảo mật nào?

  5. Điền các ngày còn thiếu trong hồ sơ