【MongoDB详细使用教程】一、Mac安装MongoDB

【MongoDB详细使用教程】二、MongoDB基本操作

【MongoDB详细使用教程】三、高级查询

【MongoDB详细使用教程】四、python操作MongoDB

【MongoDB详细使用教程】五、MongoDB的数据库管理

1、数据类型

MongoDB常见类型 说明
Object ID 文档ID
String 字符串,最常用,必须是有效的UTF-8
Boolean 存储一个布尔值,true或false
Integer 整数可以是32位或64位,这取决于服务器
Double 存储浮点值
Arrays 数组(js)或列表(python),多个值存储到一个键
Object 用于嵌入式的文档,即一个值为一个文档
Null 存储Null值
Timestamp 时间戳
Date 存储当前日期或时间的UNIX时间格式

2、数据库操作

命令 操作
show dbs 显示数据库列表
db 显示当前数据库
use 数据库名 切换或创建数据(有则切换,无则创建)
db.dropDatabase() 删除当前所在数据库(D大写)

注:

  • 使用"show dbs"时,不显示空的数据库
> use mymongo
switched to db mymongo > db
mymongo > show dbs # 创建后使用show dbs不会显示刚创建的数据库
admin 0.000GB
config 0.000GB
local 0.000GB > db
mymongo > db.mytest.insert({"name":"chen"})
WriteResult({ "nInserted" : 1 }) > show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
mymongo 0.000GB # 插入一条数据后,就可以在show dbs中显示出来了
  • 删除数据库前要切换到要删除的数据库,删除之后数据库内内容被清空,使用"show dbs"不显示,但是使用"db"命令的时候还会看到。
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
mymongo 0.000GB > db.dropDatabase()
{ "dropped" : "mymongo", "ok" : 1 } > show dbs
admin 0.000GB
config 0.000GB
local 0.000GB

3、集合操作

关系型数据库中,每个库是由多张table组成,

而NoSQL中,每个库是由多个集合(collection)组成,相当于sql中的table,集合中以键值对(json、python.dict)的形式保存数据。

命令 操作
db.createCollection(集合名, [参数]) 创建集合(一般不用这种方式而是在插入数据时自动创建)
show collections/show tables 查看集合
db.集合名.drop() 删除集合
> db.createCollection("colletiontest")
{ "ok" : 1 } > show collections
colletiontest
mytest > db.colletiontest.drop()
true > show collections
mytest

4、数据操作

也叫文档操作

4.1、增

db.集合名.insert({"键名1":值1, "键名2": 值2 ...})
> db.students.insert({"name":"chen","age":"18", "grade":"一年级"})
WriteResult({ "nInserted" : 1 })
> db.students.insert({"name":"wang","age":"19", "grade":"二年级"})
WriteResult({ "nInserted" : 1 })
> db.students.insert({"name":"xu","age":20, "grade":"三年级"})
WriteResult({ "nInserted" : 1 })

一条insert语句只能插入一行数据,insert后面不能跟多行数据。

4.2、查

db.集合名.findOne()        # 查询一行
db.集合名.find() # 查询全部
db.集合名.find().pretty() # 格式化打印 db.集合名.find({查找条件}) # 按条件查找
> db.students.findOne()
{
"_id" : ObjectId("5db63d020f98841018f7695f"),
"name" : "chen",
"age" : "18",
"grade" : "一年级"
} > db.students.find()
{ "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年级" }
{ "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年级" }
{ "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年级" } > db.students.find().pretty()
{
"_id" : ObjectId("5db642b30f98841018f76965"),
"name" : "chen",
"age" : "18",
"grade" : "一年级"
}
{
"_id" : ObjectId("5db642bc0f98841018f76966"),
"name" : "wang",
"age" : "19",
"grade" : "二年级"
}
{
"_id" : ObjectId("5db653920f98841018f7696b"),
"name" : "xu",
"age" : 20,
"grade" : "三年级"
}
> db.students.find()
{ "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年级" }
{ "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年级" }
{ "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年级" }
{ "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年级" } > db.students.find({"age":20})
{ "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年级" }
{ "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年级" }

"_id"是mongoDB自动添加的主键.

十六进制,每两个字符为一个字节,共12个字节

  • 前4个字节为当前时间戳
  • 接下来3个字节为机器ID
  • 再接下来2个是MongoDB的进程ID
  • 最后是排序流水号

4.3、改

4.3.1、修改整行

db.集合名.update({查询条件}, {修改后结果})

这里要注意,修改后结果就是整行的最终结果,并且只会修改一行,而不是所有匹配结果都修改。

可以通过多个字段查找

4.3.2、修改指定字段的值

db.students.update({查找条件}, {$set:{"要修改的字段名1":修改后的值, "要修改的字段名2": "值2"}})

同时修改了连个字段的值,但同样只会修改一条记录

4.4、删

db.集合名.remove({查询条件})
db.集合名.remove({}) # 删除全部数据

会删除所有的匹配项

最新文章

  1. BZOJ4567[Scoi2016]背单词
  2. 同一web系统,不同端口的跨域问题
  3. Android Studio修改项目的包名
  4. 解决ibus图标为红圈(图标丢失)
  5. [ffmpeg 扩展第三方库编译系列] 关于libopenjpeg mingw32编译问题
  6. POJ 1067 取石子游戏
  7. Mac OS X平台上Java环境的配置
  8. SQLite的 SQL语法总结
  9. 【SqlServer系列】开启Sqlserver远程访问
  10. 多个tab选项卡
  11. .Net 4.X 提前用上 .Net Core 的配置模式以及热重载配置
  12. 计算机17-3,4作业E
  13. elasticsearch搜索框架的安装相关
  14. Inside a low budget consumer hardware espionage implant
  15. tomcat 与 nginx,apache的区别
  16. 【转载】C#:使用双缓冲让界面绘制图形时避免闪烁
  17. 安装SourceTree工具,无需注册就可以正常使用SourceTree
  18. I - Interesting Calculator (bfs使用优先队列求步数最小或者花费最小)
  19. emoji表情存储到数据库的方法
  20. (转载)MySQL数据库的几种常见高可用方案

热门文章

  1. 【全网首创】修改 Ext.ux.UploadDialog.Dialog 源码支持多选添加文件,批量上传文件
  2. 查看mysql中的用户和密码
  3. Linux入门基础之 下
  4. asp.net core + layui.js 搭建仓储系统
  5. 整理总结 python 中时间日期类数据处理与类型转换(含 pandas)
  6. Python学习笔记整理总结【Django】:Form组件
  7. webservice传输文件的三种方式
  8. java8 Optional使用总结
  9. java使用POI操作excel文件,实现批量导出,和导入
  10. 基于vue-cli3.11.0创建创建vue项目