增加节点js mongodb中的计数器

Mat*_*toy 5 javascript mongodb node.js angularjs

我想为我的网站使用 angular js 的 mongodb 驱动程序计算服务器 js 文件已启动的次数。

我想保存一个名为 counter 的变量,它的值为 0,然后在每次服务器运行时增加该值。我的代码在下面。正如您所看到的,我的代码并没有真正更新数据库中的字段。只是变量。

除此之外......好吧......我写的整个代码似乎是不好的做法。我基本上有一个带有 {id:<>,count:0} 的文档,我循环遍历所有大于 -1(即整数)的计数字段,尽管我只有 1 个计数字段。

没有任何简单的方法可以从数据库中持久化/获取这个 1 值吗?

如何使用 $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();
});
Run Code Online (Sandbox Code Playgroud)

Pat*_*ard 3

尝试这个:

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();
});
Run Code Online (Sandbox Code Playgroud)

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

  1. 获取集合中属性“count”大于 -1 的所有对象

  2. 将其值增加 1

  3. 将其保存到集合中。

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

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