使用 mongodb compass 在我的数据库中添加了一些 json 数据,并尝试使用 mongoose 获取数据,但得到的是空数组

Posted

技术标签:

【中文标题】使用 mongodb compass 在我的数据库中添加了一些 json 数据,并尝试使用 mongoose 获取数据,但得到的是空数组【英文标题】:Added some json data in my database with mongodb comapss and tried to get the data with mongoose but got empty array instead 【发布时间】:2021-10-07 06:38:13 【问题描述】:

我下载了一些 json 格式的餐馆数据,并使用 mongodb 罗盘将其添加到 localhost。但是当我尝试使用 mongoose 从 express 后端获取数据时,我得到了一个空数组。

数据库名称是 sampleRestaurants,集合名称是餐馆。该数据库托管在端口 27017 上。

使用此代码连接到 mongodb 数据库:

const dbURI = "mongodb://127.0.0.1:27017/sampleRestaurants";
mongoose
  .connect(dbURI,  useNewUrlParser: true, useUnifiedTopology: true )
  .then((result) => 
    app.listen(5000, () => console.log("server is listening on port 5000"));
  )
  .catch((err) => console.log(err));

然后创建架构:(我什至需要架构来获取所有数据!)

const restaurantSchema = new Schema(
  
    name: String,
    neighborhood: String,
    photograph: String,
    address: String,
    latlng: Object,
    cuisine_type: String,
    operating_hours: Object,
    reviews: Array,
  
);

const Restaurant = mongoose.model("Restaurant", restaurantSchema);

试图获取所有餐馆数据:

app.get("/all-restaurants", (req, res) => 
  Restaurant.find()
    .then((result) => res.send(result))
    .catch((err) => console.log(err));
);

结果是:[ ]

如何获取餐厅的所有数据?

【问题讨论】:

该代码看起来适合在“sampleRestaurants”数据库的“restaurants”集合中查找所有文档。 还是不行! 那么可能是数据插入方式的问题? 可能是这样吧,我不知道怎么用mongo shell,但是通过compass访问数据没有问题。 使用 mongo shell 连接并运行show dbs,然后运行use sampleRestaurantsshow collections。将结果编辑到问题中。 【参考方案1】:

终于成功了,多亏了 joe,也许是指南针出了问题,使用 mongo shell 解决了错误。

【讨论】:

以上是关于使用 mongodb compass 在我的数据库中添加了一些 json 数据,并尝试使用 mongoose 获取数据,但得到的是空数组的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到我的 MongoDB 数据库,在 Mongodb Compass 上收到此错误“Server Selection Timed Out After 3000ms”

Windows MongoDB - 已安装的Compass但在系统中找不到Compass

在 Ubuntu 上通过 Compass 加载 MongoDB Atlas 时出错

无法使用 SSH 隧道将 MongoDB Compass 连接到 AWS DocumentDB

如何在我的项目中配置 webpack 以使用 compass

MongoDB和MongoDB Compass的安装配置教程