我正在尝试删除不存在的集合,但出现以下错误:
MongoError:未找到ns。
在类似的问题中,有一个指向mongo代码的链接,该链接显示这是预期的行为:
MongoError: ns not found when try to drop collection
但是,根据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
})
答案 0 :(得分:3)
您链接是指mongo客户端的命令界面。它使用javascript,但它是具有自己的REPL的应用程序。该文档是正确的。
您使用的命令来自官方的mongodb节点程序包。这些命令的行为与mongo客户端上的行为不同。有关您的用法的文档位于:http://mongodb.github.io/node-mongodb-native/3.0/api/Collection.html#drop
顺便说一句,第一个参数是一个选项对象,第二个参数是回调。
您提供的回调仅在成功的mongodb查询上调用。当集合不存在时(如本例所示),将不执行回调。但是此函数返回一个promise,可用于处理任何错误:
mongodb.collection('colname').drop().then(function () {
// success
}).catch(function () {
// error handling
})