node.js - italiano - mongoose tutorial




Come memorizzare grandi numeri in MongoDB con Node.js (2)

Sto usando MongoDB con il driver del nodo nativo e ho bisogno di memorizzare accuratamente i numeri che possono essere maggiori del massimo 2147483647. Dovrò essere in grado di incrementare il numero mentre sto monitorando l'utilizzo. Quali sono le mie opzioni?

Sto usando Mongoose. Il problema che sto avendo è che quando I $inc passato 2147483647 converte il numero in un doppio. Come posso forzare Mongoose a utilizzare il numero lungo a 64 bit int NumberLong ?

Il mio schema assomiglia a questo

var schema = new Schema({
    ...
    usedBandwidth: {type: Number, min: 0, default: 0}
});

E il mio $inc assomiglia a questo

model.Account.update(
    {_id: this.account},
    {$inc: {usedBandwidth: this.size}},
    function (err, doc) {}
);

https://code.i-harness.com


MongoDB ha un tipo intero nativo a 64 bit, solitamente chiamato NumberLong (almeno nella shell / driver javascript di MongoDB). Se stai usando il driver nativo di node-mongodb, credo che si chiami Long (anche se non ne sono certo, qualcuno mi corregga se sbaglio). $inc funziona come previsto rispetto ai campi di tipo NumberLong .


Ora puoi farlo in Mongoose con il plug-in Mongoose.

require('mongoose-long')(mongoose);
var SchemaTypes = mongoose.Schema.Types;
var schema = new Schema({
    ...
    usedBandwidth: {type: SchemaTypes.Long, min: 0, default: 0}
});




mongoose