当前位置: 首页 >> MongoDB >> MongoDB基本操作

MongoDB基本操作

2023-09-10 15:58:17 星期日  发表于北京  阅读:725


MongoDB的常用查询语法

存储相关

  1. //登录
  2. mongo 192.168.1.105:27017/dbname -u username -p xxxxxx
  3. // 查看所有MongoDB节点信息,包括主节点和所有从节点
  4. rs.status()
  5. use dbname
  6. // 查看某个表的状态信息:存储大小、总索引大小
  7. db.tablename.stats()
  8. // count()
  9. db.tablename.count()
  10. // dataSize() 单位:GB 不经过压缩
  11. db.tablename.dataSize() / 1024 / 1024 / 1024
  12. // storageSize() 单位:GB 经过压缩
  13. db.tablename.storageSize() / 1024 / 1024 / 1024
  14. // totalIndexSize() 索引大小,单位GB,经过压缩
  15. db.tablename.totalIndexSize() / 1024 / 1024 / 1024
  16. // 存储+索引大小 单位:GB 经过压缩
  17. db.tablename.totalSize() / 1024 / 1024 / 1024
  18. // 查看某个字段=1的三条数据
  19. db.tablename.find({ "WebsiteID" : 1}).limit(3)
  20. // 查看日期大于某个时间点的3行数据
  21. db.tablename.find({ "WebsiteID" : 1, "UpdatedDate":{$gte:new Date("2020-05-01T00:00:00.000Z")}}).limit(3)
  22. // 查看查询执行计划,包括是否命中索引,需要读取的文档数,返回的文档数等相关指标
  23. db.tablename.fine({"name": "libins"}).explain(true)

Find查询

Find是MongoDB中查询数据的基本指令,相当于SQL中的SELECT
Find返回的是游标
注意:db表示的是当前数据库。比如MongoDB现在有5个库,分别如下

mydb1
mydb2
mydb3
mydb4
mydb5

使用use mydb5之后,再执行db.find命令时,db表示的就是mydb5,如果要切换db,直接use mydbx即可。这一点跟MySQL类似。

Find示例:

  1. db.movies.find({"year": 1975}) // 单条件查询
  2. db.movies.find({"year": 1989, "title": "Batman"}) // 多条件查询
  3. db.movies.find({$and:[{"title": "Batman"},{"category": "action"}]}) // and的另一种形式
  4. db.movies.find({$or:[{"year": 1989}, {"title":Batman"}]}) // 多条件or查询
  5. db.movies.find({"title": /^B/}) // 按正则表达式查找

查询条件对照表

使用Find搜索子文档

find支持使用“field.sub_field”的形式查询子文档,如下文档:

  1. db.fruit.insertOne({
  2. name: "apple",
  3. from: {
  4. country: "China",
  5. province: "Yunnan"
  6. }
  7. })

需求是:查找出from子文档下面 country的值是China的文档

  1. 正确写法:db.fruit.find( { "from.country": "China"})
  2. 错误写法:db.fruit.find( {"from" : {country: "China}})