【问题标题】:increment counter in node js mongodb节点js mongodb中的增量计数器
【发布时间】:2016-11-25 15:21:57
【问题描述】:

我想为我的网站使用 mongodb driver for angular js 计算服务器 js 文件启动的次数。

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

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

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

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

谢谢

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();
});

【问题讨论】:

  • 这是doc.count+1; 想做什么?
  • 更新为 doc.count=doc.count+1;
  • 它应该将 db (count) 中的值增加 1

标签: javascript angularjs node.js mongodb


【解决方案1】:

试试这个:

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 的所有对象

  2. 将其值增加 1

  3. 将其保存到集合中。

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

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

【讨论】:

  • 这是什么语法?当我尝试您的代码时,我得到了未定义:db.users.update(...)。我最终做了 db.collection('users').updateOne( { "name":"id"}, {$inc: { count: 1 } });解决了它。我给你 +1 的费用和 $inc
  • 您可以使用点符号引用集合。即 db.users 等价于 db.collections("users")。不过看看我的解决方案..这里可能会出现竞争情况。 (“更新”也拼写错误,“更新”)。您可能会在更新之前关闭连接。暂时移除 db close 看看会发生什么。如果可以的话,也在这里发布错误。我很好奇。
  • 谢谢。当我使用您的版本时,db.users 等于 undefined。你在哪里看到比赛条件?也许它的问题...
猜你喜欢
  • 2016-05-02
  • 2012-05-12
  • 2014-08-30
  • 2018-06-15
  • 2014-09-25
  • 2019-07-28
  • 2021-05-13
  • 2017-12-03
  • 2021-06-08
相关资源
最近更新 更多