节点js mongodb中的增量计数器

时间:2016-07-21 21:01:38

标签: javascript angularjs node.js mongodb

我想计算一下服务器js文件启动时间的计数器,对于我的网站使用mongodb驱动程序进行角度js。

我想保存一个值为0的varible命名计数器,然后在每次运行服务器时递增该值。我的代码如下。正如您所看到的,我的代码不会在数据库中更新字段。只是变数。

旁边......好吧......我写的整个代码看起来像是不好的做法。我基本上有一个{id:<>,count:0}的文档,我循环遍历所有大于-1的计数字段(即整数),尽管我只有1个计数字段。

是不是有任何简单的方法来持久保存/从db获取这个值?

如何以最简单的方式使用$ inc之类的内容更新数据库内部的字段?

由于

MongoClient.connect(url, function(err, db) {
    assert.equal(null, err);
    if (err) {
        console.log(err);
    }
    else {
        console.log("Connected correctly to DB.");
        var dbusers =db.collection('users');
        var cursor =dbusers.find( { "count": { $gt: -1 } } );
        cursor.each(function(err, doc) {
            assert.equal(err, null);
            if (doc != null) {
                doc.count=doc.count+1;
            }  
        }
        );
    }
    db.close();
});

1 个答案:

答案 0 :(得分:2)

试试这个:

MongoClient.connect(url, function(err, db) {
    if (err) {
        console.log(err);
        return db.close();
    }

    console.log("Connected correctly to DB.");
    // update a record in the collection
    db.users.update(
        // find record with name "MyServer"
        { name: "MyServer" },
        // increment it's property called "ran" by 1
        { $inc: { ran: 1 } }
    );
    return db.close();
});

这应该足以让你入门。听起来你正在尝试做类似的事情:

  1. 告诉我集合中所有具有属性'计数'大于-1

  2. 将其值增加1

  3. 将其保存到集合中。

  4. 您缺少的步骤是第3步。按照您的方式进行,您必须进行批量更新。我给你的例子是更新一条记录。

    here是增量文档。 here是批量更新的文档。