mongo.Long $ inc因大数而失败

时间:2017-11-13 12:57:09

标签: 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(() => {
        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

0 个答案:

没有答案