我正在尝试删除一个不存在的集合,但出现以下错误:
MongoError: ns未找到。
在一个类似的问题中,有一个指向 mongo 代码的链接,它表明这是预期的行为:
Mongo错误:尝试删除集合时找不到ns
但是,根据 mongo 文档,如果集合不存在,此方法应返回false:
https://docs.mongodb.com/manual/reference/method/db.collection.drop/#db.collection.drop
我错过了什么?
服务器版本 - 3.6.5,mongodb 客户端 (javascript( - 3.0.21
我使用的命令:
await mongodb.collection('colname').drop()
和
mongodb.collection('colname').drop((err, res) => {
console.log('err: ' + err + ', res: ' + res) // doesn't get called
})
链接是指 mongo 客户端的命令界面。它使用javascript,但是一个有自己的REPL的应用程序。文档是正确的。
您正在使用的命令来自官方的 mongodb 节点包。这些命令的行为与 mongo 客户端上的行为不同。有关您的使用的文档在这里:http://mongodb.github.io/node-mongodb-native/3.0/api/Collection.html#drop
顺便说一句,第一个参数是一个选项对象,第二个参数是回调。
您提供的回调仅在成功的 mongodb 查询时调用。当集合不存在时(如本例所示(,不执行回调。但是这个函数返回一个承诺,可以用来处理任何错误:
mongodb.collection('colname').drop().then(function () {
// success
}).catch(function () {
// error handling
})