MongoDB和关系型数据库的区别
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table | joins | 表连接,MongoDB不支持 |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
连接MongoDB
命令
show dbs #显示数据库
use xxx #切换到xxx数据库,这里也可以用作创建,但是创建后是没有数据的说以show dbs是不会显示整个数据库的,需要插入数据才会显示
db #显示当前数据库
show collections #显示集合
创建/删除数据库
use collection #创建
db.dropDatabase() #删除当前db
创建集合
(也就是sql里的表)name集合的名称,options集合的参数(可选)
db.createCollection(name, options)
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | 如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | 如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | 为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。 |
max | 数值 | 指定固定集合中包含文档的最大数量。 |
db.createCollection("test", {capped : false, autoIndexId : true} )
删除集合
db.collection.drop()
插入
插入的时候如果集合不存在,那么插入操作会创建集合。
db.collection.insert({title:"这是一个测试数据",arr:["111","222",333,"444",555]}) #一个数组中可以插入字符串或数字
db.collection.insertOne({aaa:123}) #插入一条数据 3.2后支持
db.collection.insertMany([{a:1},{b:"2"}]) #插入多条数据 3.2后支持
删除
对于大量的删除操作,把你想要保留的文档复制到一个新的集合然后使用 db.collection.drop() 方法删除原集合或许会更高效。
db.collection.deleteMany({}) #删除全部document,当然drop() 可能效果会
db.collection.deleteMany({aaa: 123 }) #删除多条aaa=123的document
db.collection.deleteOne({aaa: 123 }) #删除第一条aaa=123的document
查询
db.collection.find({}) #等价于db.test.find()
db.collection.find({aaa:123,bbb:234}) #同时满足aaa=123,bbb=234
更新
更新是是可以增加字段的
db.collection.updateOne() #即使可能有多个文档通过过滤条件匹配到,但是也最多也只更新一个文档。
db.collection.updateOne(
{ "aaa": "123" }, #query定位想当与sql的where
{
$set: { "bbb": "567"}, #修改的内容,相当于sql的where
$currentDate: { lastModified: true } #可以通过这个命令增加修改时间,可以不加
}
)
db.collection.updateMany() #更新所有通过过滤条件匹配到的文档.
db.collection.updateMany(
{ "aaa": "123" }, #query定位想当与sql的where
{
$set: { "bbb": "567","ccc":"123"}, #修改的内容,相当于sql的where,我还在这里加了新的字段
$currentDate: { lastModified: true } #可以通过这个命令增加修改时间,可以不加
}
)
db.collection.replaceOne() #和updateOne类似,但是不能做到只更新某些属性,这是一个替换操作
db.collection.replaceOne({aaa:"123"},{aaa:"haha",detail:"我在这里加了字段"})