使用Python创建MongoDB验证器后触发‘ns does not exist’错误排查
问题原因与解决办法
错误根源
你遇到的ns does not exist错误,核心问题在于代码里的集合创建和修改操作不匹配:
production.create_collection("")创建的是空名称的集合,不是你后续要修改的book集合。- 当执行
collMod命令修改book集合时,这个集合实际上还不存在,MongoDB就会抛出命名空间(ns)不存在的错误。 - 你看到的“创建了集合”是空名称的无效集合,和目标
book集合无关。
解决步骤
方法1:先创建正确集合再修改
把创建集合的代码改成指定book名称,再执行collMod:
book_validator = {your validation data} # 创建正确的book集合 production.create_collection("book") # 给book集合添加验证器 production.command("collMod", "book", validator=book_validator)
方法2:创建集合时直接指定验证器(更高效)
不需要分开执行创建和修改,在创建集合时直接传入验证器参数,一步到位:
book_validator = {your validation data} production.create_collection("book", validator=book_validator)
额外注意
如果之前已经创建了空名称的无效集合,可以用以下命令删除它:
production.drop_collection("")
内容的提问来源于stack exchange,提问作者wondergrandma
相关产品推荐
相关产品推荐

