最佳答案
通过 NodeMongoDB 本地驱动程序使用 Nodejs 和 MongoDB。需要检索一些文档,并进行修改,然后保存回来。这是一个例子:
db.open(function (err, db) {
db.collection('foo', function (err, collection) {
var cursor = collection.find({});
cursor.each(function (err, doc) {
if (doc != null) {
doc.newkey = 'foo'; // Make some changes
db.save(doc); // Update the document
} else {
db.close(); // Closing the connection
}
});
});
});
如果文档的更新过程需要更长的时间,那么当光标到达文档的末尾时,数据库连接将关闭。并非所有更新都保存到数据库中。
如果省略了 db.close()
,则所有文档都被正确更新,但应用程序挂起,永远不会退出。
我看到一篇文章建议使用一个计数器来跟踪更新的数量,当回落到零,然后关闭数据库。但我做错什么了吗?处理这种情况的最好方法是什么?是否必须使用 db.close()
来释放资源?还是需要打开新的数据库连接?