node中使用mongodb
2020-06-08 本文已影响0人
Mr无愧于心
1. 在node中安装mongodb
$ cnpm install mongodb
2. 引入并初始化mongodb
const {MongoClient} = require('mongodb');//创建一个 MongoClient 对象
const url = "mongodb://localhost:27017/runoob";//数据库的地址
3. 链接数据库
MongoClient.connect(url, { useNewUrlParser: true }, function (err, db) {
if (err) throw err;
console.log('数据库链接成功');
var dbase = db.db("runoob");//链接到runoob数据库;
db.close();//关闭数据库
});
//不加{ useNewUrlParser: true }系统会报警告
4. 操作数据库
操作完数据库之后一定要关闭数据库
- 增加数据insertOne
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) console.log(err);
var dbo = db.db("runoob");//链接runoob数据库
var myobj = { name: "教程", url: "www.runoob" };
dbo.collection("site").insertOne(myobj, function(err, res) {
//insertOne往site集合中插入一条数据
if (err) console.log(err);
console.log(res);
db.close();//关闭数据库
});
});
- 插入多条数据insertMany
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) console.log(err);
var dbo = db.db("runoob");//链接runoob数据库
var myobj = [
{ name: '菜鸟工具', url: 'https://c.runoob.com', type: 'cn'},
{ name: 'Google', url: 'https://www.google.com', type: 'en'},
{ name: 'Facebook', url: 'https://www.google.com', type: 'en'}
];
dbo.collection("site"). insertMany(myobj, function(err, res) {
//insertMany往site集合中插入多条数据一个数组
if (err) console.log(err);
console.log(res);
db.close();//关闭数据库
});
});
数据插入成功
- 删除一条数据
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("runoob");
var whereStr = {"name":'菜鸟教程'}; // 查询条件
dbo.collection("site").deleteOne(whereStr, function(err, obj) {
if (err) throw err;
console.log("文档删除成功");
db.close();
});
});
- 删除多条数据
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("runoob");
var whereStr = { type: "en" }; // 查询条件
dbo.collection("site").deleteMany(whereStr, function(err, obj) {
if (err) throw err;
console.log(obj.result.n + " 条文档被删除");
db.close();
});
});
- 修改一条数据updateOne
把name为“教程”的数据的type换成'cn',只更换第一条,注意要写$set
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("runoob");
var whereStr = {"name":'教程'}; // 查询条件
var updateStr = {$set: { type: 'cn' }};
dbo.collection("site").updateOne(whereStr, updateStr, function(err, res) {
if (err) throw err;
console.log("文档更新成功");
db.close();
});
});
- 修改多条数据updateMany():
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("runoob");
var whereStr = {"type":'en'}; // 查询条件
var updateStr = {$set: { "url" : "https://www.runoob.com" }};
dbo.collection("site").updateMany(whereStr, updateStr, function(err, res) {
if (err) throw err;
console.log(res.result.nModified + " 条文档被更新");
db.close();
});
});
- 查询数据 find
查询name为'菜鸟教程'的数据并打印
toArray()自带函数,转换成数组接受一个回调函数
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("runoob");
var whereStr = {"name":'菜鸟教程'}; // 查询条件
dbo.collection("site").find(whereStr).toArray(function(err, result) {
if (err) throw err;
console.log(result);//查询的结果一个数组
db.close();
});
});
- 数据排序 sort
按type正序排列
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("runoob");
var mysort = { type: 1 };
dbo.collection("site").find().sort(mysort).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
- 数据分页 skip / limit
查询 page=2, size=2
let page=2;
let size=2
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("runoob");
dbo.collection("site").find().skip((page-1)*size).limit(size).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
- 管道查询
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("runoob");
dbo.collection('orders').aggregate([
{
$project:{"_id":}
},
{ $lookup:
{
from: 'products', // 副集合
localField: 'product_id', // 主集合 join 字段
foreignField: '_id', // 副集合 join 字段
as: 'orderdetails' // 新生成字段(类型array)
}
},
{ $project:
{
"_id":0,
"product_id":1,
"status":1,
"orderdetails":1
}
}
]).toArray(function(err, res) {
if (err) throw err;
console.log(res);
db.close();
});
});
//console (res) 结果
[{
product_id":154,"
status":1,"
orderdetails":[
{
"_id":154,
"name":"笔记本电脑"
}
]
}]