我正在写一个小应用程序,它可以给关键词打分.所以,如果"贝鲁特"和"教育"被输入,如果他们以前没有见过,我想创建一个mongo条目,给他们打1分.如果他们有,我想增加他们的分数1.我正试图用一个更新命令来实现这一点,但我认为我可能做错了.

  • 排名是表示数据库的对象
  • "关键"是关键词
rankingdb.update(
    {keyword:key},
    {keyword:key, {$inc:{score:1}}},
    {upsert:true, safe:false},
    function(err, data) {
      if (err) {
          console.log(err);
      }
      else {
          console.log("score succeeded");
      }
    }
);

SyntaxError: Unexpected token {

你不能用增量创建一个全新的文档吗?

推荐答案

您的一般方法是正确的,但正如错误消息所示,您的代码中存在语法问题.

试试这个:

rankingdb.update(
    {keyword: key},
    {$inc: {score: 1}},
    {upsert: true, safe: false},
    function(err,data){
        if (err){
            console.log(err);
        }else{
            console.log("score succeded");
        }
    }
);

当upsert需要创建新对象时,它会在创建对象时将 Select 器(第一个参数)和更新对象(第二个参数)中的字段组合在一起,这样就不需要将keyword字段同时包含在这两个字段中.

请注意,在2.0驱动程序中不推荐使用update(),因此现在应该使用updateOne()updateMany().

Mongodb相关问答推荐

Select 筛选聚合中的嵌套字段

当日期和时间在不同键的字符串中时,Mongo 查询过滤今天的数据

MongoDb聚合查询问题

如何更新mongo中列表最后一个对象的属性

如何将交易列表变成 token 数量的对象?

MongoDB 查询以包含多个字段的最常见值的计数

MongoDB PHP UTF-8 问题

mongoose通过引用属性查找文档

GeoJSON 和 MongoDB:将点存储为 GeoJSON.Point 是否值得?

mongoose如何在幕后工作

如何使用 MongoDB 建模 likes投票系统

在MongoDB中查询一个半​​径内的位置

如何防止MongoDB在查找文档时返回对象ID?

在 Ubuntu 13.10 (saucy) 中安装 Mongodb PHP 扩展的最简单方法?

从 nodejs 到 mongodb 或 mongoose 的动态数据库连接

MongoDB聚合框架的索引优化

我需要手动关闭mongoose连接吗?

mongoose查询返回 null

无法从 mongodb 中删除集合

创建模型时出现mongoose错误