sql与mongodb的区别
SQL术语 | MongoDB | 解释 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
创建数据库
use dbname#从这里开始下文中所有的dbname都是自己新建的数据库的名称
如果存在dbname,则会自动选择dbname数据库,如果不存在则会创建dbname数据库。
创建完毕数据库之后可以通过
db #查看当前选择的数据库
show dbs #查看所有的数据库
如果数据库中没有数据那么show dbs无法显示新创建的数据库名称。
删除数据库
db.dropDatabase()
创建集合
db.creatCollection("ccname") #ccname同dbname一样为自己剪的集合
db.creatCollection("ccname",{capped:true,autoIndexID:true,size:10000,max:10000})
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | 固定集合的大小,如果值为true时必须也指定size |
autoindexid | 布尔 | 如果为true,自动创建_id字段索引 |
size | 数值 | 设置集合的大小 |
max | 数值 | 指定固定集合中包含文档的最大数量 |
其实在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
删除集合
db.ccname.drop()
文档的增删改查
增
db.ccname.insert({'name':'李华','age':18})
或者你可以定义一个变量
abc = ({'name':'李华','age':18})
db.ccname.insert(abc)
删
db.collection.remove(
, #删除的文档的条件。
{
justOne: , #如果设为 true 或 1,则只删除一个文档。
writeConcern: #抛出异常的级别。
}
)
db.ccname.remove({'name':'李华'})#删除所有name=李华的文档
db.ccname.remove({'name':'李华'},{justOne:1})#删除一条name=李华的文档
改
db.collection.update(
, #相当于sql语句的where
<update>, #相当于sql语句的set
{
upsert: , #可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi: , #可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern: #可选,抛出异常的级别。
}
)
修改name=李华的文档,修改为age=20,sex=男
db.ccname.update({'name':'李华'},{$set:{'age':20,'sex':'男'})
以上方法只会修改第一条符合条件的文档,如果想修改多条可以如下
db.ccname.update({'name':'李华'},{$set:{'age':20,'sex':'男'},{multi:true})
查
查询集合中所有文档
db.ccname.find()
按照条件查询+and条件
db.ccname.find({"name":"李华","age":20}).pretty()
# 相当于select * from ccname where name="李华" and age=20;
其中pretty可以时输出的数据更容易查看
查询中的or条件
db.ccname.find({$or:[{"name":"李华"},{"age":15}]})
#相当于select * from ccname where name="李华" or age=15;
and和or连用:
db.ccname.find({"name":"李华",$or:["age"=20,"age"=15]})
#相当于select * from ccname where name="李华" and (age=20 or age=15);