MongoDB添加集合报错:已确认数据库存在却提示myDB未定义
问题分析与解决方案
嘿,这个问题我见过很多次啦,其实就是MongoDB Shell的使用细节没搞对,我给你理清楚:
为什么会报错?
当你执行use myDB切换数据库时,MongoDB Shell并不会生成一个和数据库同名的全局变量(也就是myDB这个变量根本不存在)。Shell里是用内置的db对象来代表当前选中的数据库的,你直接写myDB.myCol.insert(...),Shell会把myDB当成一个未定义的变量,所以才会抛出myDB is not defined的错误。
另外补充个小知识点:MongoDB的数据库和集合都是"懒创建"的——只有当你执行写入操作(比如插入数据)时,它们才会真正被创建出来。你之前用show dbs能看到数据库存在,说明这个库已经有数据了,但这和Shell的变量规则没关系。
正确的操作步骤
只需要把你的插入命令改成用db对象操作就好:
- 切换到目标数据库(这一步你是对的):
use myDB - 执行插入操作(用
db代替myDB):# 传统insert写法 db.myCol.insert({"id":"1"}) # 更推荐的insertOne(MongoDB 3.2+支持,语义更明确) db.myCol.insertOne({"id":"1"})
验证集合是否创建成功
执行完插入后,你可以用以下命令确认:
- 查看当前数据库下的所有集合:
show collections - 查询刚插入的数据:
db.myCol.find({"id":"1"})
内容的提问来源于stack exchange,提问作者CamMoore
相关产品推荐
相关产品推荐

