- 在MongoDB网站上下载server安装包并安装
- vs terminal 执行命令:
npm install mongodb
此mongodb是npm包,是MongoDB NodeJS driver - (optional) 安装Robo 3T, 数据库可视化工具
mongodb : MongoDB 的 NodeJS 驱动
连接数据库并创建collections,以下CRUD代码部分是一部分一部分单独测试后copy过来的,全部放在了一起。
const mongodb = require("mongodb");
const MongoClient = mongodb.MongoClient;
const connectionURL = "mongodb://127.0.0.1:27017";
const databaseName = "task-manager";
MongoClient.connect(
connectionURL,
{ useNewUrlParser: true },
(error, client) => {
if (error) {
return console.log("Unable to connect to database!");
}
const db = client.db(databaseName);
// 1. C: Create documents
db.collection("tasks").insertMany(
[
{ description: "Walk in woods",
completed: false },
{
description: "Go to buy food",
completed: true,
},
{
description: "Read a book",
completed: true,
},
],
(error, result) => {
if (error) {
return console.log("Insertion failed");
}
console.log(result);
}
);
// R: Read documents
db.collection("tasks").findOne({
_id: new ObjectId("6127bc7782c4bb18fdfa9979"),
}, (error, result) => {
console.log(result);
});
db.collection("tasks")
.find({ completed: false })
.toArray((error, result) => {
console.log(result);
});
db.collection("users")
.find({ age: 22 })
.toArray((error, result) => {
console.log(result);
});
db.collection("users").findOne({ _id: new ObjectId("61288fbbf5c8ebf1f32edeaa")}, (error, user) => {
if (error) {
return console.log(error);
}
console.log(user);
});
// U: Update documents
db.collection("users")
.updateOne(
{ _id: new ObjectId("61288fbbf5c8ebf1f32edeaa") },
{
$set: { age: 44, name: "Kevin" },
}
)
.then((resolve) => console.log("user updated"))
.catch((reject) => console.log("user update failed."));
db.collection("tasks")
.updateMany({ completed: true }, { $set: { completed: false } })
.then((result) => {
console.log("task Updated");
})
.catch((error) => {
console.log("task update failed!");
});
// D: Delete documents
db.collection("users")
.deleteMany({ age: 22 })
.then((result) => console.log(result))
.catch((error) => console.log(error));
db.collection("tasks")
.deleteOne({ description: "Walking in woods" })
.then((result) => console.log("task deleted"))
.catch((error) => console.log(error));
});
mongoose
NPM包: npm install mongoose
,mongodb的API相对底层,mongoose 在幕后使用mongodb, 提供了数据验证等很多有用的功能,也有通过Mongoose连MongoDB的例子。
const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1:27017/task-manager-api", {
useNewUrlParser: true,
// useCreateIndex: true, not supported
});
const User = mongoose.model("User", {
name: {
type: String,
},
age: {
type: Number,
},
});
const me = new User({ name: "Andrew", age: 27 });
// 在名称为users的collection中添加一个document
// mongoose 自动将model名称转换为小写+复数,作为collection名称。
// 例如:User -> users, Diary -> diaries
me.save()
.then(() => console.log(me))
.catch((error) => console.log(error));
只要进行数据库操作,终端就需要始终运行 mongod
命令。