MongoDB的常用查询语法
//登录
mongo 192.168.1.105:27017/dbname -u username -p xxxxxx
// 查看所有MongoDB节点信息,包括主节点和所有从节点
rs.status()
use dbname
// 查看某个表的状态信息:存储大小、总索引大小
db.tablename.stats()
// count()
db.tablename.count()
// dataSize() 单位:GB 不经过压缩
db.tablename.dataSize() / 1024 / 1024 / 1024
// storageSize() 单位:GB 经过压缩
db.tablename.storageSize() / 1024 / 1024 / 1024
// totalIndexSize() 索引大小,单位GB,经过压缩
db.tablename.totalIndexSize() / 1024 / 1024 / 1024
// 存储+索引大小 单位:GB 经过压缩
db.tablename.totalSize() / 1024 / 1024 / 1024
// 查看某个字段=1的三条数据
db.tablename.find({ "WebsiteID" : 1}).limit(3)
// 查看日期大于某个时间点的3行数据
db.tablename.find({ "WebsiteID" : 1, "UpdatedDate":{$gte:new Date("2020-05-01T00:00:00.000Z")}}).limit(3)
// 查看查询执行计划,包括是否命中索引,需要读取的文档数,返回的文档数等相关指标
db.tablename.fine({"name": "libins"}).explain(true)
Find是MongoDB中查询数据的基本指令,相当于SQL中的SELECT
Find返回的是游标
注意:db表示的是当前数据库。比如MongoDB现在有5个库,分别如下
mydb1
mydb2
mydb3
mydb4
mydb5
使用use mydb5之后,再执行db.find命令时,db表示的就是mydb5,如果要切换db,直接use mydbx即可。这一点跟MySQL类似。
Find示例:
db.movies.find({"year": 1975}) // 单条件查询
db.movies.find({"year": 1989, "title": "Batman"}) // 多条件查询
db.movies.find({$and:[{"title": "Batman"},{"category": "action"}]}) // and的另一种形式
db.movies.find({$or:[{"year": 1989}, {"title":Batman"}]}) // 多条件or查询
db.movies.find({"title": /^B/}) // 按正则表达式查找
find支持使用“field.sub_field”的形式查询子文档,如下文档:
db.fruit.insertOne({
name: "apple",
from: {
country: "China",
province: "Yunnan"
}
})
需求是:查找出from子文档下面 country的值是China的文档
正确写法:db.fruit.find( { "from.country": "China"})
错误写法:db.fruit.find( {"from" : {country: "China}})