mongo再次学习

106 阅读1分钟

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…

image.png

我参考的文章: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节点组成,