MySQL术语与MongoDB术语的对比
SQL | MongoDB | 说明 |
---|---|---|
database | database | 数据库 |
table | collecton | 表/集合 |
row | document | 行/文档 |
column | field | 字段/域 |
index | index | 索引 |
table joins | 表连接/mongodb不支持a | |
primary key | primary key | 主键/mongoDB自动以_id为主键 |
数据库操作
#查看所有数据库
show dbs
#切换数据库
use 数据库名
#mongodb是自动创建数据库的,插入数据即可创建
use testdb
db.user.insert({'username':'xiaoming','pwd':'123456','age':18})
#删除数据库在要删除的数据库下执行以下命令
db.dropDatabase()
集合操作
#创建集合 数据库创建插入集合中时就会自动创建
#查看当前数据库下的所有集合
show collections
#删除集合
db.user.drop()#user 是集合名成功返回true失败false
数据的增删改查
#增加数据 db.COLLECTIONS_NAME.insert(document)
db.user.insert({'username':'xiaoming','pwd':'123456'},'age':18)
#查询所有数据
db.user.find()
#查询条件数据 语法
db.user.find([query],[fields])
--query:查询条件 $lt:小于 $lte:等于 $gt:大于 $gte:大于等于 都是以{<key> : <value>}的格式填入
--fields:投影操作符返回指定键。省略返回全部键默认是省略的
#查询age等于18的用户
db.user.find({'age':18})
#查询age>18的
db.user.find({'age':{$gt:18}})
#更新数据
db.collection.update(
<query>,#条件 类似于where
<update>,#update的对象和一些更新的操作符,类似于update中的set
[
upsert:<boolean>,#更新的数据如果不存在,是否插入。true插入。默认为flase
multi:<boolean>,#默认是false 即只更新查找到的第一条数据。true则更新多条
writeConcern:<document>#抛出的异常级别
]
)
#更新username为xiaoming的user 年龄更新为10
db.user.update({'username':'xiaoming'},{$set:{'age':10}})
db.user.update({'username':'xiaoming'},{'age':10})#这样会删除掉其他字段
#更新不存在的字段会自动添加新字段
#更新不存在的数据默认不会新增数据
db.user.update({"username":xiaohong},{$set:{'age':18}},true)#设置为true会新增不存在的数据
#删除数据
db.collection.remove(
<query>,#条件
{
justOne:<boolean>,#默认为false会删除掉所有匹配的文档;true只删除一个文档
writeConcern:<document>
}
)
#删除年龄为18的user
db.user.remove({'age':18})#会删除所有满足条件的user
db.user.remove({'age':18},true)#只会删除一条
#删除所有数据
db.user.remove({})
#简化操作
db.user.deleteOne({'age':18})#删除一条
db.user.deletMany({'age':18})#删除多条
索引
#查看索引
db.user.getIndexes()
#创建索引
db.user.createIndex({'age':18})
#删除索引
db.user.dropIndex('索引名称')
#删除除_id以外的索引
db.user.dropIndexes()
#创建联合索引
db.user.createIndex({'age':1,'username':'xiaoming'})
#查看索引大小 单位B
db.user.totalIndexSize()