在Javascript中无法使用文档(MongoDB)更新数组

时间:2016-11-01 18:19:56

标签: javascript node.js mongodb

我正在寻找类似5个小时的答案,希望有人可以提供帮助。我有一个MongoDb集合结果(我正在使用mLab),它看起来像这样:

$("item1").on('change', function() {
   var $this = $(this);
   $.get("/index.php?r=kasir%2Ftransaction%2Fget-price-item&id="   +$(this).val(), function(data){
    console.log("harga:"+ $this.closest("tr").find(".harga-jual").length);
    $this.closest("tr").find(".harga-jual").val(data.price.harga)
   });
});

“user”是一个MongoID我保存在代码的前一部分,“结果”是分数的记录。当用户进行新分数时,我必须更新相应级别的分数(我正在使用NodeJS)。 这是我到目前为止尝试过的事情之一。

    {
    "user":"5818be9c74aaec1824c28626"
    "results":[{
             "game_id":14578,
             "level1":-1,
             "level2":-1,
             "level3":-1
         }, 
     { ....
     }],
         { "user":....
         }
     }

});

我检查了每个变量和参数的内容,尝试使用$ elemMatch和点表示法,设置upsert和multi,没有结果。我在mongo shell上使用了一个相同的命令,它在第一次尝试时就有用了。

Update with Mongo Shell

如果有人能告诉我我做错了什么或者指出了我正确的方向,那就太好了。 感谢

1 个答案:

答案 0 :(得分:0)

在MongoDB中将MongoId用作字段时,不能仅传递带有ID的字符串来进行查询,您必须将该字符串标识为ObjectId(Mongo中的ID类型) 。只需在您的node.js文件中添加一个新的require

var ObjectID = require("mongodb").ObjectID;

并在更新请求中使用导入的构造函数。

dbM.collection("results").update(
    {user:ObjectID(id),...
    ...
    }