MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Pole numeru MongoDB nie zostanie wstawione ani zaktualizowane o wprowadzony przeze mnie numer

Przepraszamy, na początku nie zrozumiałem twojego pytania i dlatego podałem złą odpowiedź (dziękuję cababunga za wskazanie tego). Oto właściwy.

Mongoshell obsługuje różne typy danych . I próbuje odgadnąć twój typ danych, kiedy je wprowadzasz. Więc wpisujesz swój duży numer:138548488276343678 . Zauważ, że jest większe niż 2^31-1, które jest maksimum dla 32-bitowej liczby całkowitej. Traktuje to więc jako pływak, a ponieważ pływaki nie są dokładnie przechowywane, trochę go modyfikuje. Z tego powodu Twój zapisany numer jest prawie taki sam, ale różni się trochę (ta różnica będzie mniejsza niż 8). Ale chcesz przechowywać tę liczbę dokładnie, a mongo obsługuje 64-bitową liczbę całkowitą (która pasuje do Twojej liczby całkowitej).

Musisz więc określić, że chcesz go przechowywać jako 64-bitową liczbę całkowitą . Możesz to zrobić w następujący sposób:

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

Następnie możesz pobrać swój dokument db.a.find() i będzie dobrze. Zauważ, że wiele sterowników ma podobne problemy i dlatego musisz wyraźnie powiedzieć, że zamierzasz je zapisać jako 64-bitową liczbę całkowitą.

Jeśli nie określasz _id dla dokumentu, który tworzysz, mongodb tworzy _id pole samot. Możesz przeczytać trochę więcej o _id tutaj oraz w oficjalnej dokumentacji .

Jeśli masz własne pole, które chcesz wykorzystać jako _id , zamiast pisać id:138548488276343678 powinieneś wpisać _id : 138548488276343678 .

PS ponieważ widzę, że używasz dość dużych liczb, pamiętaj, że liczby całkowite w mongodb są przechowywane jako 64-bitowe liczby całkowite (co oznacza, że ​​wynosi od -2^63 do 2^63 - 1)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak usunąć puste tweety za pomocą filter() w pyspark?

  2. find({}) zwraca pustą tablicę mangusty

  3. Jak mogę włączyć libmongoc ssl w PHP 7 dla połączenia Mongodb?

  4. Zdalne połączenie z serwerem MongoDB za pomocą Codeigniter

  5. Dlaczego wiosenne dane mongo nie wracają na pole, mając czas?