javascript – 节点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();
});

最佳答案 试试这个:

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的属性’count’的所有对象
>将其值增加1
>将其保存到集合中.

您缺少的步骤是第3步.按照您必须进行批量更新的方式进行操作.我给你的例子是更新单个记录.

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

点赞