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

Trường Số MongoDB sẽ không chèn hoặc cập nhật với số mà tôi nhập

Xin lỗi, tôi không hiểu câu hỏi của bạn ngay từ đầu và do đó cung cấp câu trả lời sai (cảm ơn cababunga đã chỉ ra điều này). Vì vậy, đây là một chính xác.

Mongoshell hỗ trợ các các loại dữ liệu khác nhau . Và nó cố gắng đoán kiểu dữ liệu của bạn khi bạn nhập. Vì vậy, bạn nhập số lớn của mình: 138548488276343678 . Lưu ý rằng nó lớn hơn thì 2 ^ 31-1 là giá trị lớn nhất cho số nguyên 32 bit. Vì vậy, nó coi nó như một phao và bởi vì các phao không được lưu trữ chính xác, nó sẽ sửa đổi nó một chút. Đây là lý do tại sao số được lưu trữ của bạn gần như giống nhau, nhưng khác nhau một chút (sự khác biệt này sẽ nhỏ hơn 8). Nhưng bạn muốn lưu trữ chính xác số này và mongo hỗ trợ số nguyên 64-bit (phù hợp với số nguyên của bạn).

Vì vậy, bạn cần xác định rằng bạn muốn lưu trữ nó dưới dạng số nguyên 64 bit . Bạn có thể thực hiện việc này theo cách sau:

db.a.insert({
  bound:"latest",
  id: NumberLong("138548488276343678"),  // Note these "". I was not using them and the number was not stored correctly
  complete:false
})

Sau đó, bạn có thể truy xuất tài liệu của mình db.a.find() và nó sẽ chính xác. Lưu ý rằng rất nhiều trình điều khiển gặp sự cố tương tự và do đó bạn phải thông báo rõ ràng rằng bạn sẽ lưu chúng dưới dạng số nguyên 64 bit.

Nếu bạn không chỉ định _id đối với tài liệu bạn đang tạo, mongodb tạo _id lĩnh vực của nó. Bạn có thể đọc thêm một chút về _id tại đây và trong tài liệu chính thức .

Nếu bạn có trường của riêng mình, bạn muốn sử dụng trường này làm _id , thay vì viết id:138548488276343678 bạn nên viết _id : 138548488276343678 .

P.S. cũng bởi vì tôi thấy rằng bạn đang sử dụng các số khá lớn, hãy nhớ rằng các số nguyên trong mongodb được lưu trữ dưới dạng số nguyên 64 bit (có nghĩa là nó nằm trong khoảng từ -2 ^ 63 đến 2 ^ 63 - 1)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đang cố gắng lấy danh sách các bộ sưu tập từ mongoose

  2. cách thiết lập mogodb trong dịch vụ mới nổi có xác thực

  3. Meteor:xuất bản 2 phép chiếu khác nhau của các phần tử mảng

  4. Không tải được phần mở rộng c ++ bson, bằng cách sử dụng phiên bản JS thuần túy

  5. Cách lấy giá trị từ tài liệu MongoDB