2011-12-23 17 views
8

Yerel düğüm sürücüsüyle MongoDB kullanıyorum ve en çok 2147483647 int'den büyük olabilecek numaraları doğru bir şekilde kaydetmem gerekiyor. Numarayı arttırma ihtiyacım olacak. Ben kullanımı takip ediyorum. Seçeneklerim nelerdir?Node.js ile MongoDB'de büyük sayılar nasıl depolanır

Mongoose kullanıyorum. Sorun şu ki, 2147483647'yi geçen $inc numaralı numarayı bir sayıya çevirir. Mongoose'u 64-bit long int NumberLong'u kullanmaya nasıl zorlayabilirim?

Benim şema bu

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

benziyor Ve $inc benziyor bu

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

Sadece biraz daha bilgi ve Gelincik beklendiği gibi – respectTheCode

cevap

7

Artık bunu Mongoose'da mongoose-long eklentisiyle yapabilirsiniz. eşit veya 2^31 daha büyük delta değerleri için: (değil Mongo, ama Mongoose notu)

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

MongoDB genellikle en az MongoDB javascript (NumberLong adlı bir yerel 64 bit uzunluğunda tamsayı türü var kabuk/sürücü). Düğüm-mongodb-native sürücüsünü kullanıyorsanız, bunun sadece Long olarak adlandırıldığına inanıyorum (bundan emin değilim, birileri yanılıyorsa lütfen beni düzeltin). $inc, NumberLong tipindeki alanlara göre beklendiği gibi çalışır.

+0

$ inc çalışmıyor kod eklemiş. Sonra aniden Doubles'a dönüşüyorlar. – arik

İlgili konular