sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Number Field kommer inte att infogas eller uppdateras med numret som jag matat in

Förlåt, jag förstod inte din fråga i början och gav därför fel svar (tack cababunga för att du påpekade detta). Så här är en korrekt.

Mongoshell stöder olika datatyper . Och den försöker gissa din datatyp när du anger den. Så du anger ditt stora nummer:138548488276343678 . Observera att det är större än 2^31-1 vilket är maxvärdet för 32-bitars heltal. Så det behandlar det som ett flöte och eftersom flöten inte lagras exakt, modifierar det det lite. Det är därför ditt lagrade nummer är nästan detsamma, men skiljer sig lite (denna skillnad kommer att vara mindre än 8). Men du vill lagra detta nummer exakt och mongo stöder 64-bitars heltal (som passar ditt heltal).

Så du måste ange att du vill lagra den som 64-bitars heltal . Du kan göra detta på följande sätt:

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

Efter detta kan du hämta ditt dokument db.a.find() och det kommer att stämma. Observera att många drivrutiner har liknande problem och därför måste du uttryckligen tala om att du kommer att spara dem som 64-bitars heltal.

Om du inte anger _id för dokumentet du skapar skapar mongodb _id fält av sig självt. Du kan läsa lite mer om _id här och i officiell dokumentation .

Om du har ett eget fält, som du vill ska användas som _id , istället för att skriva id:138548488276343678 du bör skriva _id : 138548488276343678 .

P.S. även för att jag ser att du använder ganska stora tal, kom ihåg att heltal i mongodb lagras som 64-bitars heltal (vilket betyder att det är mellan -2^63 till 2^63 - 1)




  1. MongoDB :Varför ska vi stänga markören efter att den har använts?

  2. Laddar MongoDB GetCollection-metoden hela samlingen till RAM eller en referens? C#

  3. @DBRef hämtar inte data när du använder Spring Data Mongo

  4. Hur man hanterar bindestreck i GraphQL Schema definitioner