Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点js mongodb中的增量计数器_Javascript_Angularjs_Node.js_Mongodb - Fatal编程技术网

Javascript 节点js mongodb中的增量计数器

Javascript 节点js mongodb中的增量计数器,javascript,angularjs,node.js,mongodb,Javascript,Angularjs,Node.js,Mongodb,我想为我使用mongodb驱动程序的网站计算服务器js文件启动的时间 我想保存一个变量命名计数器,该计数器的值为0,然后在服务器每次运行时递增该值。我的代码如下。正如您所看到的,我的代码没有实际更新数据库中的字段。只是变量 除此之外。。。好。。我写的整个代码似乎都是糟糕的练习。我基本上有一个{id:,count:0}的文档,我正在遍历所有大于-1的count字段(即整数),尽管我只有1个count字段 是否有任何简单的方法可以从数据库中持久化/获取这个1值 如何以最简单的方式使用$inc之类的东

我想为我使用mongodb驱动程序的网站计算服务器js文件启动的时间

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

除此之外。。。好。。我写的整个代码似乎都是糟糕的练习。我基本上有一个{id:,count:0}的文档,我正在遍历所有大于-1的count字段(即整数),尽管我只有1个count字段

是否有任何简单的方法可以从数据库中持久化/获取这个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();
});
试试这个:

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();
});
这应该足以让你开始。听起来你好像在尝试做以下事情:

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

  • 将其值增加1

  • 将其保存到集合中

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


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

    这是
    doc.count+1假设要做什么?更新为doc.count=doc.count+1;它假定将db(count)中的值增加1这是什么语法?我在尝试您的代码时未定义:db.users.update(…)。最后我做了db.collection('users').updateOne({“name”:“id”},{$inc:{count:1}});这就解决了问题。我给你+1表示支持,给$inc表示支持,你可以使用点符号引用一个集合。i、 e.db.users等同于db.collections(“用户”)。看看我的解决方案。。这里可能有比赛条件。(此外,“更新”拼写错误,“udpate”)。您可能正在更新之前关闭连接。现在移除db close,看看会发生什么。如果可以,也可以在此处发布错误。我很好奇,谢谢。当我使用您的版本时,db.users等于未定义。你在哪里看到比赛情况?也许这就是问题所在。。。