show dbs/collections/tables;
use 库 创建库
db.dropDatabase(); 删除库
db.createCollections(''); 创建集合
db.集合.drop(); 删除集合
db.集合.insertOne/Many 集合中插入数据
db.集合.remove(); 删除文档
for(let i=x;i<x;i++){} 循环操作
db.集合.update({条件},{$set:{更改后}}) set的作用是保留除更改之外的值(原来的版本如果不写set的话,其他字段默认删除,版本6会报错)
db.集合.find([条件],[查询字段{字段:0/1(1返回)}])[.pretty()超过一定长度的文档格式化]; 查询集合
查询条件:
等于: 小于:$lt 小于等于:$lte 大于:$gt 大于等于:$gte 不等于:$ne
mysql中and ==> 逗号, 如果字段相同,以最后一个为准
mysql中or ==> {$or:[{条件},{条件}]}
模糊查询: 使用正则表达式
数组查询: 跟普通查询相同,特殊$size:查询数组符合长度的
排序: .sort({字段:1/-1})1升,-1降
分页: .skip(第几页).limit(一页几条)
.count计数
.distinct去重
$type 按照数据类型(object/简写1,string/简写2,double3,array4) 例: {$type:4}
索引:查询b+树,类似于mysql的自增id
getIndexes,createIndex({需要建立索引的字段(可以是复合(一个索引由多个key维护))},{其他可选参数(name,unique唯一,expireAfterSeconds)})
dropIndex("索引名称"),totalIndexSize()索引占用大小,
关于复合索引(要符合左前缀原则,比如字段id,name,age,那么id,age不能组成复合索引,而name,age/id,name可以(顺序可以变更))(排序中也符合这种原则)
聚合查询aggregate类似于mysql中count, 例db.集合.aggregate([{$group:{_id: "$字段名" , num_tutorial: {$sum : 1}}]) (以字段名为组求和)
副本集:是mongodb中具有自动故障转移的主从集群,主要解决高可用问题,无法解决单点压力问题(这个需要集群完成)
搭建副本集:./mongod --port 27017 --dbpath ../rep1/data1(需创建) --bind_ip 0.0.0.0 --replSet 副本集名称/[localhost:27018,localhost:27019]
./mongod --port 27018 --dbpath ../rep1/data2(需创建) --bind_ip 0.0.0.0 --replSet 副本集名称/[localhost:27017,localhost:27019]
./mongod --port 27019 --dbpath ../rep1/data3(需创建) --bind_ip 0.0.0.0 --replSet 副本集名称/[localhost:27017,localhost:27018]
初始化副本集:var config = {_id:副本集名称, members:[{_id:0, host:"localhost: 27017"}, {第二}, {第三}]}
rs.initiate(config)
副本集主节点默认可读可写,从节点不可读写(可以通过rs.secondaryOK授予读权限)
标签:副本,15,--,MongoDB,db,2023,集合,id,localhost From: https://www.cnblogs.com/weakxy-home/p/17400754.html