MongoDB 是一个基于分布式文件存储的数据库,由C++编写,介于关系数据库和非关系数据库之间的产品,所以在很多业务上可以取代 mysql,提供更高的性能以及更好的扩展性。虽然 MongoDB 不支持 sql 语法,但是从常用的操作命令上来说和 sql 的用法相类似。
查询有哪些数据库
show dbs
切换数据库
use <db_name>
如果数据库不存在,则创建数据库,否则切换到指定数据库。但是只有在数据库中插入数据,才会在查询数据库列表时显示。
查询当前数据库的所有集合
db.getCollectionNames()
查看指定集合的状态信息
db.<collection_name>.stats()
{
"ns" : "<db_name>.<collection_name>",
"count" : 1,
"size" : 4080,
"avgObjSize" : 4080,
"numExtents" : 1,
"storageSize" : 8192,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
"userFlags" : 1,
"capped" : false,
"nindexes" : 1,
"totalIndexSize" : 8176,
"indexSizes" : {
"_id_" : 8176
},
"ok" : 1
}
查看当前数据库中的所有的索引
db.system.indexes.find()
查看指定集合中的索引
db.col.getIndexes()
创建指定集合中的索引
db.col.ensureIndex({"name": 1, "age": -1})
根据 name 和 age 进行索引,1表示升序,-1表示降序。
查看集合中的文档
查询所有文档
db.col.find()
以易读的方式显示文档内容
db.col.find().pretty()
查询前10个文档
db.col.find().limit(10)
查询结果排序展示
db.col.find().sort({'clock':-1})
查询结果按照 clock 排序展示,1 为升序,-1 为降序。
where 条件
操作 | 范例 | RDBMS中的类似语句 |
---|---|---|
等于 | db.col.find({“key”:“value”}).pretty() | where key = ‘value’ |
小于 | db.col.find({“key”:{$lt:50}}).pretty() | where key < 50 |
小于等于 | db.col.find({“key”:{$lte:50}}).pretty() | where key <= 50 |
大于 | db.col.find({“key”:{$gt:50}}).pretty() | where key > 50 |
大于或等于 | db.col.find({“key”:{$gte:50}}).pretty() | where key >= 50 |
不等于 | db.col.find({“key”:{$ne:50}}).pretty() | where key != 50 |
and 条件
find() 方法可以传入多个键,每个键以逗号隔开。
db.col.find({key1:value1, key2:value2}).pretty()
or 条件
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
例如 db.col.find({$or:[{"key1":"value1"}, {"key2": "value2"}]}).pretty()
更新操作
db.collection.update( query, update, upsert, multi )
query: update 的查询条件,类似 sql update 操作的 where 子句。
update: update 的对象和一些更新的操作符(如$set, $inc…)等,也可以理解为 sql update 操作的 set 子句。
upsert: 可选,这个参数的意思是,如果不存在 update 的记录,是否插入新的记录,true 为插入,默认是 false,不插入。
multi: 可选,默认为 false,只更新找到的第一条记录,如果这个参数为 true,就把按条件查出来多条记录全部更新。
db.agent_conf.update({hostid:137}, {$set: {upload:{interval:10}}}, true)
将 agent_conf 集合中 hostid = 137 的记录将 upload.interval 的值修改为 3,如果不存在就插入,只修改匹配的第一条。
删除操作
db.col.remove({id:1})
remove 的过滤条件同 find。