sql >> Databasteknik >  >> NoSQL >> MongoDB

Skillnaden mellan Numberlong(x) och Numberlong(x)

NumberLong(253351454) fungerar bara för tal som är tillräckligt små för att de inte behöver vara ... ja, långa:Skalet måste representera dem i JS på något sätt, så det kan bara representera tal som

För större siffror krävs en textrepresentation eftersom det inte finns någon tillräckligt stor datatyp tillgänglig, därför NumberLong("3059300418") med 3059300418 > 253351454 .

Med andra ord, nej, det är ingen skillnad . Det är bara en begränsning av skalet, eller mer allmänt sett, av JS och flyttal.

Varning:Försök inte anropa konstruktorn med ett för stort nummer, d.v.s. försök inte db.foo.insert({"t" : NumberLong(1234657890132456789)}); Eftersom den siffran är alldeles för stor för en dubbel kommer det att orsaka avrundningsfel. Ovanstående nummer skulle konverteras till NumberLong("1234657890132456704") , vilket är fel, uppenbarligen.




  1. RangeError:Ogiltig arraybuffertlängd - Meteor JS

  2. Dynamisk klibbig sortering i Mongo för ett enkelt värde eller lista

  3. Node.js MongoDB Hitta med projektion för att utesluta _id returnerar det fortfarande

  4. Mongoose:CastError:Cast to ObjectId misslyckades för värdet "me" på sökvägen "_id"