MongoDB
核心概念
数据库(database) 数据库是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合
集合(collection) 集合类似于 JS 中的数组,在集合中可以存放很多文档
文档(document) 文档是数据库中的最小单位,类似于 JS 中的对象
1 |
|
下载
https://www.mongodb.com/try/download/community
可以不选择最新版, 直接选择 msi 文件
运行
默认端口是 27017
给 bin 目录配置好环境变量之后, bin 目录配置到 PATH 目录
控制台直接输入
1 |
|
查看所有的数据库
1 |
|
命令行交互
数据库操作
查看所有的数据库
1 |
|
切换数据库(如果没有数据库, 就会创建这个数据库)
tip:创建的数据库需要插入数据才能用 show dbs 查看到
1 |
|
创建集合
1 |
|
删除数据库, 需要先切换到对应的数据库下
1 |
|
查看所有集合
1 |
|
查看当前所在的 db
1 |
|
删除集合
1 |
|
文档命令
插入数据
1 |
|
查看文档中数据
1 |
|
查询某一个数据, 按照年龄查询
1 |
|
更新数据
1 |
|
我们发现张三的名字没了, 此时修改的数据会覆盖掉之前字段
我们可以使用$set 来更新字段
1 |
|
此时的张三的名字就没有丢失了
删除数据
1 |
|
使用 mongoose
使用 mongoose 可以用代码来操控 mongodb
1 |
|
1 |
|
文档的创建
1 |
|
字段类型
String 字符串
Number 数字
Boolean 布尔值
Array 数组,也可以使用 [] 来标识
Date 日期
Buffer Buffer 对象
Mixed 任意类型,需要使用 mongoose.Schema.Types.Mixed 指定
ObjectId 对象 ID,需要使用 mongoose.Schema.Types.ObjectId 指定
Decimal128 高精度数字,需要使用 mongoose.Schema.Types.Decimal128 指定
字段值验证
**必填项 **
1 |
|
**默认值 **
1 |
|
**枚举值 **
1 |
|
**唯一值 **
1 |
|
SongModel.deleteOne({_id:’5dd65f32be6401035cb5b1ed’}, function(err){
if(err) throw err;
console.log(‘删除成功’);
mongoose.connection.close();
});
1 |
|
SongModel.deleteMany({author:’Jay’}, function(err){
if(err) throw err;
console.log(‘删除成功’);
mongoose.connection.close();
});
1 |
|
SongModel.updateOne({author: ‘JJ Lin’}, {author: ‘林俊杰’}, function (err) {
if(err) throw err;
mongoose.connection.close();
});
1 |
|
SongModel.updateMany({author: ‘Leehom Wang’}, {author: ‘王力宏’}, function (err) {
if(err) throw err;
mongoose.connection.close();
});
1 |
|
SongModel.findOne({author: ‘王力宏’}, function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
//根据 id 查询数据
SongModel.findById(‘5dd662b5381fc316b44ce167’,function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
1 |
|
//不加条件查询
SongModel.find(function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
//加条件查询
SongModel.find({author: ‘王力宏’}, function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
1 |
|
db.students.find({id:{$gt:3}}); id 号比 3 大的所有的记录
1 |
|
db.students.find({$or:[{age:18},{age:24}]});
1 |
|
db.students.find({$and: [{age: {$lt:20}}, {age: {$gt: 15}}]});
1 |
|
db.students.find({name:/imissyou/});
1 |
|
//0:不要的字段
//1:要的字段
SongModel.find().select({_id:0,title:1}).exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
1 |
|
//sort 排序
//1:升序
//-1:倒序
SongModel.find().sort({hot:1}).exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
1 |
|
//skip 跳过 limit 限定
SongModel.find().skip(10).limit(10).exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
1 |
|