Mongodb是一个介于关系数据库和非关系数据库之间的产品(Nosql),是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。Mongodb数据库旨在为 WEB 应用提供可扩展的高性能数据存储解决方案
关系型数据库(Mysql)与非关系型数据库(Mongodb)的结构区别:
Windows安装:
下载地址:https://www.mongodb.com/download-center/community
Mac安装地址:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x-tarball/
安装流程命令:
1、下载:https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.4.6.tgz
2、解压:tar -zxvf mongodb-macos-x86_64-4.4.tgz
3、移动目录:
mv /xxx/mongodb-macos-x86_64-4.4 /usr/local/mongodb
// 创建数据目录
mkdir -p /usr/local/mongodb/data
mkdir -p /usr/local/ /mongodb/logs
// 启动
mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/logs/mongo.log --fork
注意:MongoDB的默认端口号是:27017
1、mongo 回车进入客户端 2、show dbs 查看数据库 3、show tables/show collections 查看集合(查看当前库里面的表) 4、db 查看当前数据库 5、use 数据库名 切换或创建数据库 如果数据库存在则切换,不存在则先创建后切换 注意:use创建的数据库只是一个空的数据库,没有集合, 所以show dbs不显示空数据库可以直接使用db命令来查看当前所在的数据库名称 6、db.集合名.insert(json对象); 添加一个集合对象并向此集合中添加文档 实例:db.c1.insert({name:'user1'}); 7、db.集合名.find(); 查看集合 8、db.dropDatabase(); 删除当前数据库(推荐“库跑”用) 删库跑路 9、db.集合名.drop(); 删除集合
添加单条文档数据:
db.collection.insertOne({ key: value })
添加多条文档数据:
db.collection.insertMany([{}, {}, {}])
可以添加单条也可以多条数据:
db.collection.insert( {} )
db.collection.insert([{}, {} ])
删除单条文档
db.collection.deleteOne({ key: value })
删除符合条件多条文档
db.collection.deleteMany({key: value})
删除全部数据
collection.deleteMany({});
查看所有:
db.c1.find();
db.c1.find({});
查询指定条件的字段:
db.集合.find({条件},{字段名:[0/1]}) 0不要字段显示, 1要记录显示
字段值为1取出相对应字段数据 0就表示不取出 _id默认会显示,只有指定为0才不会显示
例: db.c1.find({name:“user11”},{name:1});
> 年龄大于5的 db.c1.find({age:{$gt:5}}); age > 5 >年龄大于等于5的 db.c1.find({age:{$gte:5}}); age >= 5 >年龄小于5的 db.c1.find({age:{$lt:5}}); age < 5 >年龄小于等于5的 db.c1.find({age:{$lte:5}}); age <= 5 >年龄不等于5的 db.c1.find({age:{$ne:5}}); age != 5 >在一个指定的数值中查询 $in 年龄在不在这几个指定数值当中 db.c1.find({age:{$in:[1,2,3]}) >且关系 and db.集合.find({age:{$lt:5},name:"user11"}) >或关系 or db.集合.find({$or:[{条件1},{条件2}]}) db.c1.find({$or:[{age:{$ne:5}},{name: "user11"}]});
正则
db.集合.find({字段名:/正则/i})
i 不区分大小写
u 支持中文(ES6之后有的)
统计记录数量 count
db.c1.count();
db.c1.find().count();
排序
1 升序 -1 降序 字段
以age字段来升序
db.c1.find().sort({age:1})
以age字段来降序
db.c1.find().sort({age:-1})
指定获取几条 skip/limit 分页
db.c1.find().limit(3);
db.c1.find().skip(1).limit(3);
根据条件修改已存在集合中的文档数据
只修改单条文档
db.collection.updateOne({key:value}, { $set: { key: value }})
修改符合条件所有文档数据
db.collection.updateMany({key:value}, { $set: { key: value }})
字段的值的自增和自减
db.collection.updateOne({key:value}, { $inc: { key: 1 }})
db.collection.updateMany({key:value}, { $inc: { key: 1 }})