Node.js mongo.Long$inc因大量交易失败

Node.js mongo.Long$inc因大量交易失败,node.js,mongodb,Node.js,Mongodb,我正在nodejs(x64)下使用mongodb 2.2.33库,在增加字段时遇到问题: it('increment-test', function () { let db = repository.db; return setup .then(() => { return db.collection('product').save({ name: 'product1', amount: 0 }); }) .then(

我正在nodejs(x64)下使用
mongodb 2.2.33
库,在增加字段时遇到问题:

  it('increment-test', function () {
    let db = repository.db;
    return setup
      .then(() => {
        return db.collection('product').save({ name: 'product1', amount: 0 });
      })
      .then(() => {
        return db.collection('product').update({}, 
                   { $inc: { "amount": mongo.Long(5000000000000000) } });
      })
      .then(() => {
        return db.collection('product').find({}).toArray();
      })
      .then((results) => {
        assert.equal(results[0].amount, 5000000000000000);//fails
      })

  });
该测试失败;您实际上得到的不是
5000000000000000
,而是
937459712

我怎样才能让它在NodeJS下工作
mongo.Long
似乎是从NodeJS使用的正确类型,但不起作用。 如果您在使用另一个大于
Int32
的数字时怀疑上述测试通过,例如
3147483647

它传递的最大数字是
4294967296
,它是
2^32-1

,这就是JavaScript mate。这就是
Long
接受“string”作为参数的原因<代码>数字长度(“5000000000000000”)。或者只需输入
NumberLong(“5000000000000000”)/2
就可以更简洁。人们早就想到了这一点。@NeilLunn当问题涉及到
mongo.long
时,你为什么要提到
NumberLong
?注意,
mongo.Long(“5000000000000000”)
也不能解决问题。在最初的评论中,我几乎链接到了这一点,但从shell查看时,“您的问题”显示了
NumberLong()
。但是在所有驱动程序中它都是相同的实现,并且有很好的文档记录。相关:@NeilLunn你能解释一下JavaScript mate中的“我的问题”有什么问题吗。这就是
Long
接受“string”作为参数的原因<代码>数字长度(“5000000000000000”)。或者只需输入
NumberLong(“5000000000000000”)/2
就可以更简洁。人们早就想到了这一点。@NeilLunn当问题涉及到
mongo.long
时,你为什么要提到
NumberLong
?注意,
mongo.Long(“5000000000000000”)
也不能解决问题。在最初的评论中,我几乎链接到了这一点,但从shell查看时,“您的问题”显示了
NumberLong()
。但是在所有驱动程序中都是相同的实现,并且有很好的文档记录。相关:@NeilLunn你能解释一下“我的问题”有什么问题吗