-
docker 安装mongoDb
拉镜像 docker pull mongo 生成容器 docker run --name mongo01 -p 27017:27017 -v /java/mongo/db:/data/db -d mongo --auth docker exec -it mongo /bin/bash 创建一个名为 admin,密码为 123456 的用户。 > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]}); 尝试使用上面创建的用户信息进行连接。 > db.auth('admin', '123456')
-
连接和退出
连接
mongo
退出
exit
- 基本命令介绍
- show dbs 查看所有数据库
- db 查看当前数据库
- use db 切换数据库
- show collections 查询所有的表
- 查询
- db.cats.find() 查询cats表中所有的数据
- 插入数据(建表)
- db.students.insertOne({“name”:“jack”})
- mongodb是什么
-
数据库(database):是一个仓库,仓库中可以存放集合
-
集合(collections):类似数组,在集合中可以存放文档
-
文档(document):文档数据库的最小单位,我们存储和操作的内容全部是文档
-
- 强大优势
- 数据库不用存在、表不用存在都会在你创建第一条数据的时候自动创建
一、常见的操作包
官方:mongodb 比较原生(不推荐使用)
第三方:mongoose
1. mongoose初体验
- 存储
var mongoose = require('mongoose');
// 连接 MongoDB 数据库
mongoose.connect('mongodb://localhost/test', { useMongoClient: true });
mongoose.Promise = global.Promise;
// 创建一个模型
// 就是在设计数据库
// MongoDB 是动态的,非常灵活,只需要在代码中设计你的数据库就可以了
// mongoose 这个包就可以让你的设计编写过程变的非常的简单
var Cat = mongoose.model('Cat', { name: String });
for (var i = 0; i < 100; i++) {
// 实例化一个 Cat
var kitty = new Cat({ name: '喵喵' + i });
// 持久化保存 kitty 实例
kitty.save(function (err) {
if (err) {
console.log(err);
} else {
console.log('meow');
}
});
}
2.使用细节
2.1 设计Scheme 发布Model
var mongoose = require('mongoose')
var Schema = mongoose.Schema // 约束
// 1. 连接数据库:指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来
mongoose.connect('mongodb://192.168.43.49/test',{useMongoClient:true})
mongoose.Promise = global.Promise;
// 2. 设计文档结构(表结构)
// 字段名称就是表结构中的属性名称
// 约束的目的是为了保证数据的完整性,不要脏数据
var userSchema = new Schema({
username: {
type: String,
required: true // 必须有
},
password: {
type: String,
required: true
},
email: {
type: String
}
})
// 3. 将文档结构发布为模型
// mongoose.model 方法就是用来将一个架构发布为 model
// 第一个参数:如果使用大写名词来表示你的数据库表名称mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
// 例如这里的 User 最终会变为 users 集合名称
// 第二个参数:架构 Schema
//
// 返回值:模型构造函数
var User = mongoose.model('User', userSchema)
2.2 新增数据
var admin = new User({
username: 'zs',
password: '123456',
email: 'admin@admin.com'
})
admin.save(function (err, ret) {
if (err) {
console.log('保存失败')
} else {
console.log('保存成功')
console.log(ret)
}
})
2.2 查询数据
查询所有
User.find(function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
按条件查询
User.find({
username: 'zs'
}, function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
只查询一个
User.findOne({
username: 'zs'
}, function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
2.3 删除
User.remove({
username: 'zs'
}, function (err, ret) {
if (err) {
console.log('删除失败')
} else {
console.log('删除成功')
console.log(ret)
}
})
2.4 更新
User.findByIdAndUpdate('5a001b23d219eb00c8581184', {
password: '123'
}, function (err, ret) {
if (err) {
console.log('更新失败')
} else {
console.log('更新成功')
}
})