MongoDB 3命令行执行insertOne报TypeError,video库未创建求解决
解决MongoDB 3中insertOne报错及数据库未创建的问题
问题原因分析
你遇到的两个问题其实是关联的:
insertOne方法报错:MongoDB 3.0及更早的版本并不支持insertOne()这个方法——它是MongoDB 3.2版本才正式引入的新方法,所以在低版本的MongoDB Shell里调用这个方法会触发类型错误。video数据库未创建:MongoDB的特性是懒加载创建资源,只有当你成功插入数据时,数据库和集合才会被实际创建。因为你的插入命令执行失败了,所以video数据库自然不会被创建出来。
解决方案
根据你的MongoDB版本,有两种处理方式:
方式一:使用旧版本兼容的插入命令(无需升级)
如果你的MongoDB版本是3.0或更低,改用传统的insert()方法来插入数据,命令如下:
use video; db.movies.insert({ "title": "Jaws", "year": 1975, "imdb": "tt0073195" });
执行这个命令后,你会看到类似WriteResult({ "nInserted" : 1 })的成功提示,此时再执行show dbs就能看到video数据库了。
方式二:升级MongoDB到3.2及以上版本
如果你想使用insertOne()这类更现代的CRUD方法,可以把MongoDB升级到3.2或更高版本。升级完成后,重新执行你原来的insertOne()命令就能正常工作,同时video数据库也会被自动创建。
额外验证步骤
- 先查看当前MongoDB版本,确认问题根源:
db.version();
- 插入成功后,验证数据是否存在:
db.movies.find({ title: "Jaws" });
内容的提问来源于stack exchange,提问作者gunaerode
相关产品推荐
相关产品推荐

