更新数组从文档(MongoDB)在Javascript不工作
Update Array from Document (MongoDB) in Javascript not Working
我已经连续找了5个小时的答案了,希望有人能帮助我。我有一个MongoDb集合结果(我使用mLab)看起来像这样:
{
"user":"5818be9c74aaec1824c28626"
"results":[{
"game_id":14578,
"level1":-1,
"level2":-1,
"level3":-1
},
{ ....
}],
{ "user":....
}
}
"user"是我在前一部分代码中保存的一个MongoID, "results"是一个分数记录。当用户获得新分数时,我必须更新相应级别的分数(我使用NodeJS)。这是我到目前为止尝试过的方法之一。
app.get('/levelCompleted/:id/:time', function (request, response) {
var id = request.params.id;
var time = parseInt(request.params.time);
var u= game.getUserById(id);
var k = "results.$.level"+(u.level);
//I build the key to update dinamycally
dbM.collection("results").update(
{user:id,
"results.game_id":u.game_id
//u has its own game_id
},
{$set: {k:time}}
);
...
response.send(...);
});
我检查了每个变量和参数的内容,也尝试使用$elemMatch和点符号,设置upsert和multi,没有结果。我在mongo shell上使用了相同的命令,第一次尝试它就工作了。
使用Mongo Shell更新
如果有人能告诉我我做错了什么,或者给我指出正确的方向,那就太好了。由于当您在MongoDB中使用MongoId作为字段时,您不能只是传递带有id的字符串来执行查询,您必须将该字符串识别为ObjectId
(Mongo中的id类型)。只需在node.js文件中添加一个新的require
。
var ObjectID = require("mongodb").ObjectID;
并在更新请求中使用导入的构造函数。
dbM.collection("results").update(
{user:ObjectID(id),...
...
}
相关文章:
- 在表单提交将DOM的一部分替换为分部之后,我应该将ajax成功绑定到什么来使我的javascript工作
- 我可以'不要让Javascript工作不正常
- 如何让我的html5功能不兼容警告使用javascript工作
- Excel Web Services 电子邮件 JavaScript 工作表
- 用于Google Fusion Table层的Javascript工作,但试图整理代码
- Bootstrap:如何附加一个类,并且仍然有BS Javascript工作
- JavaScript 工作队列
- JavaScript工作,直到我添加这个&&陈述
- 为什么不'在CasperJS中没有简单的JavaScript工作
- 如何"递归AJAX回调”;在JavaScript工作中
- 基本验证javascript工作不正常
- 需要帮助让这个字符串的Javascript工作
- HTML和JavaScript工作不正常
- 下拉菜单无法从CSS或Javascript工作
- 需要从erb生成一个非常特定的html来让javascript工作
- 如果javascript代码段未使用,它将阻止其他javascript工作
- 将内联事件处理程序移动到chrome扩展的javascript工作表
- 阻止其他Javascript工作的Javascript
- iframe阻止javascript工作
- 无法获取切换函数(JavaScript工作)