sql >> Database >  >> NoSQL >> MongoDB

Verschil tussen Numberlong(x) en Numberlong(x)

NumberLong(253351454) werkt alleen voor getallen die zo klein zijn dat ze niet ... nou ja, lang hoeven te zijn:de shell moet ze op de een of andere manier in JS vertegenwoordigen, dus het kan alleen getallen vertegenwoordigen die

Voor grotere getallen is een tekstuele weergave vereist omdat er geen datatype beschikbaar is dat groot genoeg is, vandaar NumberLong("3059300418") met 3059300418 > 253351454 .

Met andere woorden, nee, er is geen verschil . Het is gewoon een beperking van de shell, of meer in het algemeen, van JS en floating point getallen.

Waarschuwing:probeer de constructor niet aan te roepen met een te groot getal, d.w.z. probeer niet db.foo.insert({"t" : NumberLong(1234657890132456789)}); Aangezien dat aantal veel te groot is voor een dubbel, zal het afrondingsfouten veroorzaken. Bovenstaand nummer wordt geconverteerd naar NumberLong("1234657890132456704") , wat natuurlijk verkeerd is.




  1. Hoe kan ik een Mongoose-subdocument bijwerken in een instantiemethode?

  2. Wat is het nut van meerdere Redis-databases?

  3. Nodejs kan geen verbinding maken met mongodb op cloudshell

  4. Automatisch aanvullen met java, Redis, Elastic Search, Mongo