文章目录

  • 一、数据库操作
    • 1. 查看所有数据库
    • 2. 创建数据库
    • 3. 删除数据库
    • 4. 查看当前正在使用的数据库
    • 5. 断开连接
    • 6. 查看命令api
  • 二、集合操作
    • 1. 查看当前数据库下有哪些集合
    • 2. 创建集合
    • 3. 删除当前数据库中的集合
  • 三、文档操作
    • 1. 插入文档:insert()和save()
    • 2. 文档更新
    • 3. 文档删除
    • 4. 文档查询
    • 5. 查询条件操作符
    • 6. 条件查询:and和or
    • 7. limit和skip
    • 8. 排序
一、数据库操作
1. 查看所有数据库

我们可以使用如下语句查看MongoDB中所有的数据库,如下:

> show dbs
admin  (empty)
local  0.078GB
2. 创建数据库

格式如下:

use database_name

注意:

  1. 如果数据库不存在则创建数据库,否则切换到指定的数据库
  2. 如果刚刚创建的数据库不在列表内,如果要显示它,我们需要向刚刚创建的数据库中插入一些数据

例如:

> show dbs
admin  (empty)
local  0.078GB> use school
switched to db school
3. 删除数据库

格式:

db.dropDatabase()

注意:前提条件是正在使用当前数据库

例如:

> use school
switched to db school> db.dropDatabase()
{ "dropped" : "school", "ok" : 1 }
4. 查看当前正在使用的数据库

可以使用如下两种方法进行查询当前正在使用的数据库

第一种方法:

> db
school

第二种方法:

> db.getName()
school
5. 断开连接
> exit
bye
6. 查看命令api

可以使用help查询api

> help
二、集合操作
1. 查看当前数据库下有哪些集合

我们可以使用如下语句查看当前数据库下有哪些集合

> show collections
2. 创建集合

格式:

db.collection_name.insert(doc)

注意:如果集合不存在,则自动创建集合并将文档插入,如集合存在,则直接将文档插入

例如:

> show collections> db.student.insert({name:'叶无道',sex:'男',age:25,score:92})
WriteResult({ "nInserted" : 1 })> show collections
student
system.indexes
3. 删除当前数据库中的集合

格式:

db.collection_name.drop()

当集合存在时,删除集合会返回true,否则返回false,如下:

> show collections
Class
student
system.indexes> db.Class.drop()
true> db.Class.drop()
false> show collections
student
system.indexes
三、文档操作
1. 插入文档:insert()和save()

(1) 使用insert()方法插入文档

格式1:插入一个文档

db.collection_name.insert(doc)

格式2:插入多个文档

db.collection_name.insert(doc1,doc2,...,docN)

例1:插入一个学生

> db.student.insert({name:'慕容雪痕',sex:'女',age:23,score:98})
WriteResult({ "nInserted" : 1 })

例2:插入多个学生

> db.student.insert([{name:'杨宁素',sex:'女',age:36,score:95},{name:'苏惜水',sex:'女',age:37,score:90}])
BulkWriteResult({"writeErrors" : [ ],"writeConcernErrors" : [ ],"nInserted" : 2,"nUpserted" : 0,"nMatched" : 0,"nModified" : 0,"nRemoved" : 0,"upserted" : [ ]
})

(2) 使用save()方法插入文档

格式:

db.collection_name.save(doc)

注意:如果指定_id字段,则会更新_id字段的数据;不指定_id字段,save()方法类似于insert()方法

例1:

> db.student.save({name:'蔡羽绾',sex:'女',age:28,score:89})
WriteResult({ "nInserted" : 1 })

例2:

db.student.save({"_id" : ObjectId("5d27285989a435a8bca30e8e"),name:'蔡羽绾',sex:'女',age:30,score:86})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
2. 文档更新

update()方法用于更新已存在的文档

格式:

db.collection_name.update(query,update,{upsert:<boolean>, multi:<boolean>,})

参数说明:

  1. query:update的查询条件,类似于sql里update语句内where后面的内容
  2. update:update的对象和一些更新的操作符($set,$inc)等,$set直接更新,$inc在原有的基础上累加后更新
  3. upsert:可选,如果不存在update的记录,是否当新数据插入,true为插入,false为不插入,默认为false
  4. multi:可选,mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就按照条件查找出来的数据全部更新

例1:将慕容雪痕的年龄更新为21

> db.student.update({name:'慕容雪痕'},{$set:{age:21}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

例2:将杨宁素的年龄减3岁

> db.student.update({name:'杨宁素'},{$inc:{age:-3}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

例3:将女生的年龄都改为18

> db.student.update({sex:'女'},{$set:{age:18}},{multi:true})
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 4 })

例4:如果不能匹配则插入,如果匹配则更新多条

> db.student.update({name:'赵清思'},{$set:{name:'赵清思',sex:'女',age:20,score:88}},true,true)
WriteResult({"nMatched" : 0,"nUpserted" : 1,"nModified" : 0,"_id" : ObjectId("5d2730ef76728d7ac5650485")
})> db.student.update({sex:'女'},{$set:{score:99}},true,true)
WriteResult({ "nMatched" : 5, "nUpserted" : 0, "nModified" : 5 })
3. 文档删除

格式:

db.集合名.remove(query,{justOne:<boolean>,})

参数说明:

  1. query:可选,删除的文档的条件
  2. justOne:可选,如果为true或1,则只删除一个文档

建议:在执行remove()函数前,先执行find()命令来判断执行的条件是否存在是一个良好习惯

例1:删除一个文档

> db.student.remove({score:98},{justOne:true})
WriteResult({ "nRemoved" : 1 })

例2:删除多个文档

> db.student.remove({score:98})
WriteResult({ "nRemoved" : 4 })
4. 文档查询

(1) 查询集合下所有的文档(数据)

格式:

db.collection_name.find()

例如:

> db.student.find()
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }
{ "_id" : ObjectId("5d2716af3c9a378bf66cf64c"), "name" : "慕容雪痕", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffb"), "name" : "杨宁素", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffc"), "name" : "苏惜水", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d27285989a435a8bca30e8e"), "name" : "蔡羽绾", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }

(2) 查询指定列

格式:

db.collection_name.find(query,{<key>:1,<key>:1...})

参数说明:

  1. query:查询条件
  2. key:要显示的字段,1表示显示

例1:查询所有的name和score

> db.student.find({},{name:1,score:1})
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "score" : 92 }
{ "_id" : ObjectId("5d2716af3c9a378bf66cf64c"), "name" : "慕容雪痕", "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffb"), "name" : "杨宁素", "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffc"), "name" : "苏惜水", "score" : 98 }
{ "_id" : ObjectId("5d27285989a435a8bca30e8e"), "name" : "蔡羽绾", "score" : 98 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "score" : 98 }

例2:查询所有男生的name和score

> db.student.find({sex:'男'},{name:1,score:1})
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "score" : 92 }

(3) pretty()方法以格式化的方式来显示文档

> db.student.find({sex:'男'},{name:1,score:1}).pretty()
{"_id" : ObjectId("5d2708ae3c9a378bf66cf64a"),"name" : "叶无道","score" : 92
}

(4) findOne()方法查询匹配结果的第一条数据

> db.student.findOne({age:18})
{"_id" : ObjectId("5d2716af3c9a378bf66cf64c"),"name" : "慕容雪痕","sex" : "女","age" : 18,"score" : 98
}

(5) 查询某个结果集的数据条数

> db.student.find().count()
6
5. 查询条件操作符

作用:条件操作符用于比较两个表达式并从Mongodb集合中获取数据

格式:

db.collection_name.find({<key>:{operator:<value>}})

(1) 大于($gt)

> db.student.find({age:{$gt:20}})
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }

(2) 大于等于($gte)

> db.student.find({age:{$gte:20}})
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }

(3) 小于($lt)

> db.student.find({age:{$lt:20}})
{ "_id" : ObjectId("5d2716af3c9a378bf66cf64c"), "name" : "慕容雪痕", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffb"), "name" : "杨宁素", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffc"), "name" : "苏惜水", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d27285989a435a8bca30e8e"), "name" : "蔡羽绾", "sex" : "女", "age" : 18, "score" : 98 }

(4) 小于等于($lte)

> db.student.find({age:{$lte:20}})
{ "_id" : ObjectId("5d2716af3c9a378bf66cf64c"), "name" : "慕容雪痕", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffb"), "name" : "杨宁素", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffc"), "name" : "苏惜水", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d27285989a435a8bca30e8e"), "name" : "蔡羽绾", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }

(5) 等于(:)

> db.student.find({age:20})
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }

(6) 小于等于和大于等于连用

> db.student.find({age:{$gte:20,$lte:25}})
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }

(7) 使用_id进行查询

> db.student.find({_id:ObjectId("5d2716af3c9a378bf66cf64c")})
{ "_id" : ObjectId("5d2716af3c9a378bf66cf64c"), "name" : "慕容雪痕", "sex" : "女", "age" : 18, "score" : 98 }

(8) 查询某个字段的值当中是否包含另一个值

> db.student.find({name:/雪/})
{ "_id" : ObjectId("5d2716af3c9a378bf66cf64c"), "name" : "慕容雪痕", "sex" : "女", "age" : 18, "score" : 98 }

(9) 查询某个字段的值是否以另一个值开头

> db.student.find({name:/^叶/})
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }
6. 条件查询:and和or

(1) and条件

格式:

db.collection_name.find({条件1,条件2,……,条件n})

例:查询年龄大于等于20的女生

> db.student.find({age:{$gte:20},sex:'女'})
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }

(2) or条件

格式:

 db.集合名.find({$or:[{条件1},{条件2},……,{条件n}]})

例:查询age=20或者sex=男的学生

> db.student.find({$or:[{age:20},{sex:'男'}]})
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }

(3) and和or的联合使用

例:查询所有男生或者年龄20的女生

> db.student.find({$or:[{sex:'男'},{age:20,sex:'女'}]})
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }
7. limit和skip

(1) limit:读取指定数量的数据记录

> db.student.find().limit(3)
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }
{ "_id" : ObjectId("5d2716af3c9a378bf66cf64c"), "name" : "慕容雪痕", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffb"), "name" : "杨宁素", "sex" : "女", "age" : 18, "score" : 98 }

(2) skip:跳过指定数量的数据

> db.student.find().skip(4)
{ "_id" : ObjectId("5d27285989a435a8bca30e8e"), "name" : "蔡羽绾", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }

(3) skip与limit联合使用

通常用这种方式来实现分页功能

例:每页显示4个文档

> db.student.find().skip(0).limit(4)
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }
{ "_id" : ObjectId("5d2716af3c9a378bf66cf64c"), "name" : "慕容雪痕", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffb"), "name" : "杨宁素", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffc"), "name" : "苏惜水", "sex" : "女", "age" : 18, "score" : 98 }> db.student.find().skip(4).limit(4)
{ "_id" : ObjectId("5d27285989a435a8bca30e8e"), "name" : "蔡羽绾", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }
8. 排序

格式:

db.collection_name.find().sort({<key>:1|-1})

说明:1表示升序,-1表示降序

例:按照score值升序排序,若score值相等则按name值升序排序

> db.student.find().sort({score:1,name:1})
{ "_id" : ObjectId("5d2708ae3c9a378bf66cf64a"), "name" : "叶无道", "sex" : "男", "age" : 25, "score" : 92 }
{ "_id" : ObjectId("5d2716af3c9a378bf66cf64c"), "name" : "慕容雪痕", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffb"), "name" : "杨宁素", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d271d28c7091979f2521ffc"), "name" : "苏惜水", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d27285989a435a8bca30e8e"), "name" : "蔡羽绾", "sex" : "女", "age" : 18, "score" : 98 }
{ "_id" : ObjectId("5d2730ef76728d7ac5650485"), "name" : "赵清思", "sex" : "女", "age" : 20, "score" : 98 }

MongoDB数据库—基本操作相关推荐

  1. 头歌 MongoDB 数据库基本操作

    MongoDB 数据库基本操作 第1关:数据库创建 第2关:创建集合 第3关:文档操作一 第4关:文档操作二 第1关:数据库创建 pgrep mongo -l mongo use mydb db.my ...

  2. 分布式数据库NoSQL(二)——MongoDB 数据库基本操作

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系 ...

  3. MongoDB数据库基本操作笔记

    为了保存网站的用户数据和业务数据,通常需要一个数据库.MongoDB和Node.js特别般配,因为Mongodb是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改 ...

  4. Mongodb 数据库基本操作语句,结合 Node.js + express + mongoose (实现增、删、改、查,批量增加、修改等,创建临时表,多表查询......)

    版本说明 "MongoDB": "4.0.9", // cmd命令窗输入:mongo --version "node": 10.13.0, ...

  5. mongodb在mysql中怎么用,mongoDB数据库基本操作

    mongoDB中聚集集合(collection/coll)相当于mysql中的表 文档相当于mysql中的每一行数据 常用命令 1.获得帮助命令db.help() db.表名.help() db.表名 ...

  6. educoder MongoDB 数据库基本操作

    第1关:数据库创建 编程要求 在右侧命令行中连接 MongoDB ,创建一个名为 mydb 的数据库,并插入数据:_id:1,name:"李小红". 测试说明 操作完之后点击评测, ...

  7. MongoDB数据库基本操作

    文章目录 1.创建库 2.创建集合 3.插入.查看数据 4.查找内容 5.设置别名 6.查看数据类型 7.更改数据内容 8.删除集合 9.删除数据库 10.统计集合中数据条数 11.导出数据库中的数据 ...

  8. mongodb数据库显示obj_MongoDB基础(三)—基本操作及管理 | leon的博客

    第1章 MongoDB的基本操作 1.1 查询帮助信息 > help db.help()                    help on db methods db.mycoll.help ...

  9. MongoDB的基本操作(创建数据库,数据表,查询数据表信息)

    今天,因为有朋友想要了解MongoDB的基本操作.所以,我就写一篇关于MongoDB的文章,占个坑以后有时间研究MongoDB再正式的写MongoDB的文章.关于MongoDB的安装,可以参考一下我的 ...

最新文章

  1. 复杂SELECT语句执行过程
  2. POJ 2800 垂直直方图 解题报告
  3. mybatis一级缓存命中条件
  4. Linux中查看日志文件的正确姿势,求你别tail走天下了!
  5. 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!...
  6. Java引用类型有哪些
  7. jQuery如何选择表格每行中的第三列?
  8. 【渝粤题库】国家开放大学2021春2108刑法学(2)题目
  9. [hackinglab][CTF][解密关][2020] hackinglab 解密关 writeup
  10. 这8种保证线程安全的技术你都知道吗?
  11. ExtJs中Store简介(秘籍)
  12. 升级AndroidStudio3.4问题汇总
  13. php---需要判断远程URL是否有效
  14. 解决 Chrome 下载不了东西 失败 - 已屏蔽 的问题
  15. leetcode之移动零
  16. python带我起飞 百度云_CentOS/Debian安装人人影视客户端,下载资源并自动上传到OneDrive网盘...
  17. unity 草 可以一棵棵种吗?_5种多肉叶插成活率超高,养一棵成活一大片,种都没地方种...
  18. 测试开发面试题汇总(自用)
  19. SPSS如何进行一致性检验(计算kappa值)
  20. 三菱Q系列通过wifi联服务器,三菱Q系列PLC以太网通讯,三步可以搞定!

热门文章

  1. 利用金山快盘和TortoiseSVN搭建自己的svn服务器
  2. SQLserver主从同步报错:Message: 无法创建 AppDomain “mssqlsystemresource.dbo[runtime].
  3. 用java实现耀辉三角
  4. drf快速入门01---REST规范介绍序列化器的基础使用
  5. 二维码符号体系已经到来
  6. win7计算机无用系统文件夹,c盘怎么清理到最干净(win7如何删除c盘无用文件)...
  7. 穹顶灯打不出阴暗面_微服务的阴暗面,解释
  8. kubernetes资源--secret和ServiceAccount
  9. Web 前端学习 之servlet技术(一)
  10. Android VectorDrawable 的使用