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.