mongo-删除不存在的集合会抛出“未找到ns”

时间:2018-06-21 09:08:10

标签: mongodb

我正在尝试删除不存在的集合,但出现以下错误:

  

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
})

1 个答案:

答案 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
})
相关问题