经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MongoDB » 查看文章
【MongoDB详细使用教程】二、MongoDB基本操作
来源:cnblogs  作者:cbowen  时间:2019/10/29 10:21:18  对本文有异议

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"时,不显示空的数据库
  1. > use mymongo
  2. switched to db mymongo
  3. > db
  4. mymongo
  5. > show dbs # 创建后使用show dbs不会显示刚创建的数据库
  6. admin 0.000GB
  7. config 0.000GB
  8. local 0.000GB
  9. > db
  10. mymongo
  11. > db.mytest.insert({"name":"chen"})
  12. WriteResult({ "nInserted" : 1 })
  13. > show dbs
  14. admin 0.000GB
  15. config 0.000GB
  16. local 0.000GB
  17. mymongo 0.000GB # 插入一条数据后,就可以在show dbs中显示出来了
  • 删除数据库前要切换到要删除的数据库,删除之后数据库内内容被清空,使用"show dbs"不显示,但是使用"db"命令的时候还会看到。
  1. > show dbs
  2. admin 0.000GB
  3. config 0.000GB
  4. local 0.000GB
  5. mymongo 0.000GB
  6. > db.dropDatabase()
  7. { "dropped" : "mymongo", "ok" : 1 }
  8. > show dbs
  9. admin 0.000GB
  10. config 0.000GB
  11. local 0.000GB

3、集合操作

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

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

4、数据操作

也叫文档操作

4.1、增

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

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

4.2、查

  1. db.集合名.findOne() # 查询一行
  2. db.集合名.find() # 查询全部
  3. db.集合名.find().pretty() # 格式化打印
  4. db.集合名.find({查找条件}) # 按条件查找
  1. > db.students.findOne()
  2. {
  3. "_id" : ObjectId("5db63d020f98841018f7695f"),
  4. "name" : "chen",
  5. "age" : "18",
  6. "grade" : "一年级"
  7. }
  8. > db.students.find()
  9. { "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年级" }
  10. { "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年级" }
  11. { "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年级" }
  12. > db.students.find().pretty()
  13. {
  14. "_id" : ObjectId("5db642b30f98841018f76965"),
  15. "name" : "chen",
  16. "age" : "18",
  17. "grade" : "一年级"
  18. }
  19. {
  20. "_id" : ObjectId("5db642bc0f98841018f76966"),
  21. "name" : "wang",
  22. "age" : "19",
  23. "grade" : "二年级"
  24. }
  25. {
  26. "_id" : ObjectId("5db653920f98841018f7696b"),
  27. "name" : "xu",
  28. "age" : 20,
  29. "grade" : "三年级"
  30. }
  1. > db.students.find()
  2. { "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年级" }
  3. { "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年级" }
  4. { "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年级" }
  5. { "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年级" }
  6. > db.students.find({"age":20})
  7. { "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年级" }
  8. { "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年级" }

"_id"是mongoDB自动添加的主键.
十六进制,每两个字符为一个字节,共12个字节

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

4.3、改

4.3.1、修改整行

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

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

可以通过多个字段查找

4.3.2、修改指定字段的值

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

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

4.4、删

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

会删除所有的匹配项

原文链接:http://www.cnblogs.com/cbowen/p/11752733.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号