【问题标题】:can't find mongodb collections/data找不到 mongodb 集合/数据
【发布时间】:2016-01-18 15:01:00
【问题描述】:

我正在使用 mongoose 开发一个带有 node/express/mongodb 的网络应用程序。我在我的项目中创建了一个名为 data 的文件夹,并在其中创建了另一个名为 db 的文件夹

  • 数据
    • 分贝

当我启动 mongo 时,我使用 --dbpath 参数并将其指向我创建的项目 data 文件夹。它可以很好地连接一切。我一直在向数据库写入一些数据,并且应用程序正确加载了它,但是当我打开 mongo shell 时找不到数据。

第一件事是,当我打开 shell 时,我得到的唯一数据库是 test。如果我不指定数据库名称,这是自动创建的吗?如何指定数据库名称?我的app.js 文件中有以下内容:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/abduldb');

我的猜测是应该创建一个名为abduldb 的数据库是否正确?我在 mongo shell 中没有看到这个。

另外,当使用test 数据库时,我运行show collections 并没有显示任何结果...我的数据到底写入了哪里?我现在只有 1 个模型,它看起来像这样:

var mongoose = require('mongoose');

var ItemSchema = new mongoose.Schema({
  title: String,
  body: String
});

mongoose.model('item', ItemSchema);

我正在使用以下方法在我的路由文件中添加新项目:

router.post('/items', function (req, res, next) {
  var item = new Item(req.body);
  item.save(function(err, item){
    if(err){ return next(err); }
    res.json(item);
  });
});

【问题讨论】:

  • 运行 mongo shell 时,尝试“使用 abduldb”。还要检查是否有多个 mongo 实例正在运行。
  • 好的,现在试试,谢谢你的提示!
  • @BrettMcLain 奇怪,这行得通,我能够连接到数据库,但是当我在 shell 中运行db 时,它只显示test。这是为什么?我也下载了robomongo,连接后也没有显示数据库

标签: node.js mongodb mongo-shell


【解决方案1】:

当你在 mongo shell 中时,试试这个命令:“use abduldb”。

您看不到您的集合的原因是因为您已自动连接到测试数据库。如果要更改它,请在启动 mongo shell 时运行它:

mongo abduldb

或者,您可以通过添加/更改此行来更改 .mongorc.js 文件中的默认数据库:

db = db.getSiblingDB("abduldb")

.mongorc.js 文件可以在 /etc/mongorc.js 中找到,但如果它存在于您的主目录(即 /home/abduldb/.mongorc.js)中,则会被覆盖。

【讨论】:

  • db = db.getSiblingDB('mydb') 我必须用我的数据库名称替换 'mydb' 对吗?
  • 非常感谢您的帮助!顺便说一下 .mongorc.js 文件在哪里,我在我的 mongo 安装目录中找不到它
  • @duxfox 它应该在您的主文件夹中。我推荐这个:github.com/aheckmann/mongorc.jsgit clone https://github.com/aheckmann/mongorc.jscd mongorc.jsmake install
猜你喜欢
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2012-12-05
相关资源
最近更新 更多