学习日志 分布式数据库MongoDB

分布式数据库之MongoDB

1. 指定工作目录并连接服务

​ cmd运行 mongod –dbpath MongoDB的目录 启动MongoDB数据服务器

​ 再运行一个cmd 输入命令mongo 连接MongoDB服务器

2. 基本及高级用法

​   use DATABASE_NAME#创建数据库

​   show dbs#查看目前所有数据库列表

   #若创建的数据库里没有集合(数据),则不会显示出来

​   db.dropDatabase()#删除选定的数据库,若没选择,会删除默认的刚创建的数据库

​   db.createCollection('集合名')  #创建集合

​   db.COLLECTION_NAME.drop()  #从数据库中删除一个集合

​   db.COLLECTION_NAME.insert()  #插入文档

​   db.post.insert()  #在集合中插入多个文档

​   db.COLLECTION_NAME .update({'key': 'value'},{$set:{'key':'new value'}}) #更新文档

​   db.COLLECTION_NAME.find() # 查询集合数据

​   db.COLLECTION_NAME.find() # 格式化查询文档

​   db.COLLECTION_NAME .save({_id:Objectld(),NEW_DATA}) # 替换现有文档和通过新的文档save()

​   db.COLLECTION_NAME .remove({要删除的文件},删除几个)

   #remove({})为从集合中删除整个文件

​   db.mycol.find({key1:value1, key2:value2}).pretty() : #and与的方式查看同时满足两个条件的数据

​    db.mycol.find(
    {
        $or: [ 

​             {key1: value1}, {key2:value2} 

​           ]

​   }

​    ).pretty()   # or条件查看满足任意一条的数据

​   db.COLLECTION_NAME.find().limit(num) # 限制查看多少条信息

​   db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER) # 使用跳过的文档数

练习

创建练习:

1.创建数据库 school 用来存放一些班级学生信息;

   use school

2.你要为学校下的各个年级、班级建立集合;创建集合可以是显式的,也可以是隐式的;在这路你需要显式地创建“一年级一班的”集合grade_1_1;

   db.createCollection("grade_1_1")

3.隐式创建“一年级二班”:grade_1_2创建的同时为“一年级二班”加入一个学生:

db.grade_1_2.insert({"name": 'zhangsan', "age": '7', "sex": "0"})

4.因为一些特殊原因,要解散一年级二班,删除一年级二班的信息

db.grade_1_2.drop()

5.使用循环创建一年级的3个班,并随机添加 10 名学生

for(grade_index in (grade = ['grade_1_1', 'grade_1_2', 'grade_1_3'])) {

       for (var i = 1; i <= 10; i++) {

           db[grade[grade_index]].insert({

               "name": "zhangsan" + i,

               "sex": Math.round(Math.random() * 10) % 2,

               "age": Math.round(Math.random() * 6) + 3,

               "hobby": []

           });

       }

   }

查询练习:
6.查看一年级二班grade_1_2中的所有学生

db.getCollection('grade_1_2').find({})

7.查看一年级二班grade_1_2中所有年龄是 4 岁的学生

db.getCollection('grade_1_2').find({"age": 4})

8.查看一年级二班grade_1_2中所有年龄大于 4 岁的学生

db.getCollection('grade_1_2').find({"age": {$gt: 4}})

9.查看一年级二班grade_1_2中所有年龄大于 4 岁并且小于 7 岁的学生

db.getCollection('grade_1_2').find({"age": {$gt: 4, $lt: 7}})

10.查看一年级二班grade_1_2中所有年龄是 4 岁或 6 岁的学生

db.getCollection('grade_1_2').find({"age": {$in: [4, 6]}})

11.查看一年级二班grade_1_2中所有姓名带zhangsan1的学生

db.getCollection('grade_1_2').find({"name": {$regex: "zhangsan1"}})

12.查看一年级二班grade_1_2中所有姓名带zhangsan1和zhangsan2的学生

db.getCollection('grade_1_2').find({"name": {
   $in: [new RegExp(""zhangsan1"), new RegExp(""zhangsan2")]
}})

13.查看一年级二班grade_1_2中所有兴趣爱好有三项的学生

db.getCollection('grade_1_2').find({"hobby": {$size: 3}})

14.查看一年级二班grade_1_2中所有兴趣爱好包括画画的学生

db.getCollection('grade_1_2').find({"hobby": "drawing"})

15.查看一年级二班grade_1_2中所有兴趣爱好既包括画画又包括跳舞的学生

db.getCollection('grade_1_2').find({"hobby": {$all: ["drawing", "dance"]}})

16.查看一年级二班grade_1_2中所有兴趣爱好有三项的学生的 学生数目

db.getCollection('grade_1_2').find({"hobby": {$size: 3}}).count()

17.查看一年级二班的第二位学生

db.getCollection('grade_1_2').find({}).limit(1).skip(1)

18.查看一年级二班的学生,按年纪升序

db.getCollection('grade_1_2').find({}).sort({"age": 1})

19.查看一年级二班的学生,按年纪降序

db.getCollection('grade_1_2').find({}).sort({"age": -1})

20.查看一年级二班的学生,年龄值有哪些

db.getCollection('grade_1_2').distinct('age')

21.查看一年级二班的学生,兴趣覆盖范围有哪些

db.getCollection('grade_1_2').distinct('hobby')

22.查看一年级二班的学生,男生(sex为 0)年龄值有哪些

db.getCollection('grade_1_2').distinct('age', {"sex": 0})

删除练习:

23.一年级二班grade_1_2, 删除所有 4 岁的学生

db.getCollection('grade_1_2').remove({"age": 4})

24.一年级二班grade_1_2, 删除第一位 6 岁的学生

db.getCollection('grade_1_2').remove({"age": 6}, {justOne: 1}) 

修改练习

25.一年级二班grade_1_2中,修改名为zhangsan7的学生,年龄为 8 岁,兴趣爱好为 跳舞和画画;

db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$set: {"age": 8, "hobby": ["dance", "drawing"]}})

26.一年级二班grade_1_2中,追加zhangsan7`学生兴趣爱好唱歌;

db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$push: {"hobby": "sing"}})

27.一年级二班grade_1_2中,追加zhangsan7`学生兴趣爱好吹牛和打篮球;

db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$push: {"hobby": {$each: ["brag", "play_basketball"]}}})

28.一年级二班grade_1_2中,追加zhangsan7学生兴趣爱好唱歌和打篮球,要保证hobby数组不重复;

db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$addToSet: {"hobby": {$each: ["sing1", "play_basketball"]}}})

29.新学年,给一年级二班所有学生的年龄都增加一岁

db.getCollection('grade_1_2').update({}, {$inc: {"age": 1}}, {multi: true})

30.一年级二班grade_1_2中,删除zhangsan7学生的sex属性

db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$unset: {"sex": 1}})

31.一年级二班grade_1_2中,删除zhangsan7学生的hobby数组中的头元素

db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$pop: {"hobby": -1}})

32.一年级二班grade_1_2中,删除zhangsan7学生的hobby数组中的尾元素

db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$pop: {"hobby": 1}})

33.一年级二班grade_1_2中,删除zhangsan7学生的hobby数组中的sing元素

db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$pull: {"hobby": "sing"}})

猜你喜欢

转载自blog.csdn.net/qq_27171347/article/details/81018440