8月2号再次开始学习mongo
学习内容
- 简介,特点,安装
- 核心概念、基本操作,文档查询
- $type,索引, 聚合, 整合应用
- 副本集群,分片集群
简介
-
基于分布式文件存储的非关系型的文档数据库
-
一个介与关系和非关系之间的数据库产品,是非关系数据库中功能最丰富的最像关系数据库的
-
几乎实现了关系数据库单表查询的大部分功能,支持对数据建立索引
8月2号第二章节看完了
8月13号第23章节看完了
8月14号第24章节看完了
8月15号第25章节看完了
8月15号第26章节看完了
安装目录:/opt/mongodb
下载mongodb:mongodb.com/try/downloa…
我参考的文章:blog.csdn.net/weixin_4352…
scp, mv
一定要进入admin以后再创建用户,use admin
db.createUser({user: "root",pwd: "dyw862749167", roles: [ { role: "root", db: "admin" } ]})
再次重启mongodb实例以后,use admin, db.auth('root', 'dyw862749167'), 这样就可以连接monngodb了
库的操作
集合是表。文档是记录
show dbs
db: 展示当前所在的库
db.yawutest.insert({id:1, name: "yawu"})
db.dropDatabase();
集合操作
show collections, show tables
db.createCollections("users")
db.createCollections("users",{max:100, capped:true, size:5000})
db.users.drop()
文档操作
db.user.insert({name:"roy",age:23, bir: "2012-02-31"})
db.user.insertMany([{name:"roy1",age:22, bir: "2012-03-31"}, {_id:1, age:23, bir: "2012-02-31"}])
查询所有的文档,db.user.find()
删除集合所有的数据 db.user.remove({})
db.user.remove({_id: ObjectId("")})
db.user.remove({age: 23})
for(let i = 0; < 10; i++){ db.user.insert({_id: i, name:"roy" + i,age:23 + i, bir: "2012-02-31"}) }
db.user.update({age:25},{age: 26}), 这个相当先删除再更新
db.user.update({_id:25},{$set:{name:"roy11", likes:["swim", "read"]}}), 只会更新一条
db.user.update({_id:25},{$set:{name:"roy11", likes:["swim", "read"]}}, {multi:true, upsert: true}), 会更新多条,如果不存在就插入
db.user.find().pretty()
db.user.find({key1:value1, key2:value2}).pretty()
db.user.find({$or:[{name: "roy"},{age: 20}]}).pretty()
db.user.find({age: 20},{$or:[{name: "roy"},{age: 20}]}).pretty()
db.user.find().sort({name:1, age: 1}) 1是升序,-1是降序
db.user.find({name: /sw/}) 模糊查询
数组查询
db.user.find({likes: "swim"})
db.user.find({likes: {$size:3}}).pretty()
分页,去重,总条数
db.user.find().sort().skip(start).limit(rows)
db.user.find().count()
db.user.find().distinct("字段")
db.user.find({条件}, {name:1, age:1}) 指定返回的字段
$type的使用
db.col.find({title:{$type:2}}).pretty()
索引的使用
db.user.createIndex("title":1, "desc":-1), 1:升序排列, -1:降序排列
db.user.getIndexes(); 查看集合索引
db.user.createIndex({"title":1, "desc":-1}, {name: "age_idx"})
db.user.totalIndexSize(), 查看集合索引大小
db.user.dropIndexes(), 删除集合所有索引
db.user.dropIndex('索引名称')
db.user.createIndex({"title":1}, {name: "age_idx",expireAfterSeconds:15,unique:true});
复合索引
db.user.createIndex("title":1, "desc":-1), 也是遵循最佳左前缀的
db.user.aggregate([{group:{_id: "by_user", num_tutorial: {$num:1}}}])
db.user.aggregate([{group:{_id: "by_user"}}])
副本集
mongodb副本集是有自动故障恢复功能的主从集群,有一个primary节点和一个或者多个secondary节点组成,