如何使用 Mongoose 查询导入的 json
How to query imported json using Mongoose
我已经将 json 文件上传到 MongoDB Atlas 集群(使用 mongoimport),现在我正在尝试使用 express 和 mongoose 将数据显示到本地主机。
我已经到了可以连接到集群的地步,但我在获取和显示数据方面遇到了困难。以下是我到目前为止的代码。我想使用猫鼬通过 Nodejs 查询数据库,就像我在命令行上使用 Mongo shell 一样。我在这里错过了什么?
const express = require("express");
const mongoose = require("mongoose");
const app = express();
// DB config using Mongo Atlas
const uri = require("./config/keys").mongoURI;
// // Connect to Mongo
mongoose
.connect(uri, { useNewUrlParser: true })
.then(() => console.log("MongoDB Connected..."))
.catch(err => console.log(err));
// @route GET
app.get("/", (req, res) => res.send(db.restaurants.find()));
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
我不确定这是否是您数据库中该类型 json 的唯一记录。但是如果你想在收到请求后发送,你首先需要获取文件。
// @route GET
app.get("/", (req, res) => res.send(db.restaurants.find()));
// may be something like
app.get('/', (req, res) => {
mongooseModel.find({query}, (err, result) => {
res.send(result);
});
})
根据您拥有的 mongoose.model 定义以及您希望如何找到它,您可以使用 find(return 数组)findById(return 单个文档)或 findOne 和一个问题。
这里有一个如何创建模型的例子:
//restaurant.js
const mongoose = require('mongoose');
const RestaurantSchema = new mongoose.Schema({
name: { type: String, required: true },
address: { type: String, required: true },
description:{ type: String, required: true }
//just you add how you need your schema
});
module.exports = mongoose.model('Restaurant', RestaurantSchema);
这里是你的更新代码
const express = require("express");
const mongoose = require("mongoose");
const Restaurant = require("./restaurant.js");
const app = express();
// DB config using Mongo Atlas
const uri = require("./config/keys").mongoURI;
// // Connect to Mongo
mongoose
.connect(uri, { useNewUrlParser: true })
.then(() => console.log("MongoDB Connected..."))
.catch(err => console.log(err));
// @route GET
app.get("/", (req, res) => {
Restaurant.find({}, (err, docs) => {
res.send(docs);
});
);
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
首先,初始化一个Mongoose查询数据所需要的模型。由于您已经导入了数据,因此您不必构建架构。
// restaurants.js
const mongoose = require('mongoose');
const RestaurantsSchema = new mongoose.Schema({});
module.exports = mongoose.model('Restaurants', RestaurantsSchema)
然后,将架构 'Restaurants' 导入到您的主驱动程序文件中,并通过链接过滤器指定您的查询,如下所示:
// main.js
const express = require("express");
const mongoose = require("mongoose");
const Restaurants = require("./restaurants");
const app = express();
// DB config using Mongo Atlas
const uri = require("./config/keys").mongoURI;
// Connect to Mongo
mongoose
.connect(uri, { useNewUrlParser: true })
.then(() => console.log("MongoDB Connected..."))
.catch(err => console.log(err));
// @route GET
app.get("/", (req, res) => {
Restaurants.find()
.where("filter1").gt(200)
.where("filter2").equals("$$$")
.where("filter3").nin(["Coffee"])
.limit(100)
.sort("sort1")
.select("column1 column2 column3")
.then(restaurants => res.json(restaurants))
.catch(err => res.status(404).json({ success: false }));
});
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
您应填写 "filter"、"sort"、"column"、"gt"、"equals"、"limit" 和 "limit" 的适用值"nin".
我已经将 json 文件上传到 MongoDB Atlas 集群(使用 mongoimport),现在我正在尝试使用 express 和 mongoose 将数据显示到本地主机。
我已经到了可以连接到集群的地步,但我在获取和显示数据方面遇到了困难。以下是我到目前为止的代码。我想使用猫鼬通过 Nodejs 查询数据库,就像我在命令行上使用 Mongo shell 一样。我在这里错过了什么?
const express = require("express");
const mongoose = require("mongoose");
const app = express();
// DB config using Mongo Atlas
const uri = require("./config/keys").mongoURI;
// // Connect to Mongo
mongoose
.connect(uri, { useNewUrlParser: true })
.then(() => console.log("MongoDB Connected..."))
.catch(err => console.log(err));
// @route GET
app.get("/", (req, res) => res.send(db.restaurants.find()));
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
我不确定这是否是您数据库中该类型 json 的唯一记录。但是如果你想在收到请求后发送,你首先需要获取文件。
// @route GET
app.get("/", (req, res) => res.send(db.restaurants.find()));
// may be something like
app.get('/', (req, res) => {
mongooseModel.find({query}, (err, result) => {
res.send(result);
});
})
根据您拥有的 mongoose.model 定义以及您希望如何找到它,您可以使用 find(return 数组)findById(return 单个文档)或 findOne 和一个问题。
这里有一个如何创建模型的例子:
//restaurant.js
const mongoose = require('mongoose');
const RestaurantSchema = new mongoose.Schema({
name: { type: String, required: true },
address: { type: String, required: true },
description:{ type: String, required: true }
//just you add how you need your schema
});
module.exports = mongoose.model('Restaurant', RestaurantSchema);
这里是你的更新代码
const express = require("express");
const mongoose = require("mongoose");
const Restaurant = require("./restaurant.js");
const app = express();
// DB config using Mongo Atlas
const uri = require("./config/keys").mongoURI;
// // Connect to Mongo
mongoose
.connect(uri, { useNewUrlParser: true })
.then(() => console.log("MongoDB Connected..."))
.catch(err => console.log(err));
// @route GET
app.get("/", (req, res) => {
Restaurant.find({}, (err, docs) => {
res.send(docs);
});
);
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
首先,初始化一个Mongoose查询数据所需要的模型。由于您已经导入了数据,因此您不必构建架构。
// restaurants.js
const mongoose = require('mongoose');
const RestaurantsSchema = new mongoose.Schema({});
module.exports = mongoose.model('Restaurants', RestaurantsSchema)
然后,将架构 'Restaurants' 导入到您的主驱动程序文件中,并通过链接过滤器指定您的查询,如下所示:
// main.js
const express = require("express");
const mongoose = require("mongoose");
const Restaurants = require("./restaurants");
const app = express();
// DB config using Mongo Atlas
const uri = require("./config/keys").mongoURI;
// Connect to Mongo
mongoose
.connect(uri, { useNewUrlParser: true })
.then(() => console.log("MongoDB Connected..."))
.catch(err => console.log(err));
// @route GET
app.get("/", (req, res) => {
Restaurants.find()
.where("filter1").gt(200)
.where("filter2").equals("$$$")
.where("filter3").nin(["Coffee"])
.limit(100)
.sort("sort1")
.select("column1 column2 column3")
.then(restaurants => res.json(restaurants))
.catch(err => res.status(404).json({ success: false }));
});
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
您应填写 "filter"、"sort"、"column"、"gt"、"equals"、"limit" 和 "limit" 的适用值"nin".