【发布时间】:2013-11-10 19:19:36
【问题描述】:
这是我第二次遇到这个问题,所以一定是我做错了。我创建了一个游标,其中包含我的集合的所有文档和一个投影,并且想要遍历这个游标以便我可以更新我的集合。
例如,我对光标进行排序,以便以不同的方式查看我的数据,并且根据它的排序方式,我可以就如何更新文档甚至删除它做出明智的决定……但它似乎不起作用.
cursor.each(function(err, doc) {
if(err) throw err;
if(doc==null)
{
return db.close();
}
//Remove
doc.scores.splice(3, 1);
query2 = {"_id":doc._id};
db.collection('highscores').update(query2, doc, function(err, updated) {
if(err) throw err;
console.dir("Updated Doc" + doc._id);
});
console.dir(doc);
有没有更有效的方法来做到这一点,或者我错过了什么?
【问题讨论】:
-
为什么要在循环中间关闭数据库连接(
db.close)? -
啊,是的,这是一个错字:D,更新函数永远不会被调用,因为“更新的文档”永远不会记录。
-
好的——真正的问题是什么?不清楚你在问什么。更新是异步的...?
-
问题是没有任何更新。
-
您确定要在列表返回 null 时关闭数据库连接吗?这将阻止任何进一步的数据库活动(鉴于这都是异步的,更新可能尚未发生)。
标签: javascript node.js mongodb driver