mongodb是一个文档型的数据库,里面的数据存储和查询基本上是json格式的,mongodb和nodejs就好像皮蛋和豆腐天生一对。
使用nodejs操作mongodb前需要了解mongodb的层次结构:
- system(安装mongodb就会有的数据库)
- admin
- userdefind(用户自定义的数据库)
- database(数据库名称)
- collections(表集合)
- collection(集合)
- functions
- users
- collections(表集合)
- database(数据库名称)
mongodb针对nodejs提供了官方的驱动mongdb可以直接使用npm工具进行加载。由于nodejs的模型特性,因此使用mongodb进行相关操作全部是通过回调的方式或者是promise的方式。
搭建环境
- 安装nodejs
- npm init
- package.json中添加dependencies
获取所有的数据库
api:admin.listDatabases
//回调版
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
client.db("").admin().listDatabases(function (err, resp) {
resp.databases.forEach(function (value, index, arr) {
console.log(value.name);
})
})
});
//promise版
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
client.db("").admin().listDatabases().then(function (data) {
data.databases.forEach(function (value, index, arr) {
console.log(value.name);
})
}, function (err) {
console.log(err.message);
})
});
创建数据库
mongodb当数据库不存在时,会自动创建数据库,因此,可以不用特意的进行数据库的创建操作
创建集合
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
client.db("example").createCollection("table1").then(function (result) {
}, function (err) {
console.log(err.message);
})
});
获取所有集合
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
client.db("example").listCollections().toArray().then(function (tables) {
tables.forEach(function (value, index, ts) {
console.log(value.name);
})
}, function (err) {
console.log(err.message);
})
});
向集合中插入数据
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
client.db("example").collection("table1").insert({ name: "张三丰" }).then(function (result) {
}, function (err) {
console.log(err.message);
})
});
获取集合中所有数据
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
client.db("example").collection("table1").find({}).toArray().then(function (result) {
result.forEach(function (value, index, arr) {
console.log(value.name);
});
}, function (err) {
console.log(err.message);
})
});
修改数据
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
client.db("example").collection("table1").update({ name: "李斯" }, { age: 100,name: "李斯" }).then(function (result) {
console.log(result.result);
}, function (err) {
console.log(err.message);
})
});
按条件查询
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
client.db("example").collection("table1").find({ age: 100 }).toArray().then(function (result) {
result.forEach(function (value, index, arr) {
console.log(value);
})
}, function (err) {
console.log(err.message);
})
});
删除数据
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
client.db("example").collection("table1").deleteMany({ age: 100 }).then(function (result) {
console.log(result.result);
}, function (err) {
console.log(err.message);
})
});
一个简单的mongodb数据复制项目https://github.com/golangaccount/mongodb_simple_clone