mongodb 基本命令
mongodb 的概念介绍
(以前截的图,找不到来源了)
数据库相关操作
连接数据库
mongodb://username:password@db_host/db_name
创建/切换数据库
use db_name
没有就会创建,有就会切换到该数据库
查看数据库
show dbs
删除数据库
db.dropDatabase()
删除当前所在数据库
查看当前所在数据库
db
集合的操作
创建集合
db.createCollection(name, options)
name 必选,是集合的名称
options 可选,携带一些配置参数,可选的有以下
capped: bool 类型,如果为 true 则表示这是一个固定集合,必须指定 size 参数。这样当集合大小达到 size 指定值时,新插入的文档会覆盖最早的文档。
size:数值,为集合固定一个最大值(以字节计)
autoIndexId:bool 类型,如果为 true,自动在 _id 字段创建索引。
max:数值,固定中包含的文档最大数量。
例如
db.createCollection(“mycol”,{capped:true, autoIndexId: true, size: 10000, max: 100})
实际在使用中并不需要显性的创建集合。在插入文档的时候会自动创建
db.mycol.insert({“name”:”Laily”})
查看集合
show collections
删除集合
db.mycol.drop()
删除集合 mycol
文档操作
插入文档
db.<collection_name>.insert(document)
查看文档
db.<collection_name>.find(query, projection)
query: 可选,查询条件
projection:可选,使用投影操作指定返回的键。省略该参数则返回文档中的所有键值。
db.<collection_name>.find().pretty() 使用易读的方式查看。
查询条件
$ne ———– not equal !=
$eq ——– equal =
AND
db.<collection_name>.find({field1:value1, field2:value2})
OR
find{
$or:[
{field1 : value1}, {field2 : value2}
]
}
AND OR 联用
find{
{field1 : value1},
$or : [
{field2 : value2},
{field3 : value3}
]
}
相当于 where field1 = value AND (field2 = value2 OR field3 = value3)
projection 使用
find{query, {title: 1, name: 1}} // inclusion 模式,指定返回的键,不返回其它键,
find{query, {title: 0, name: 0}} // exclusion 模式,指定不返回的键。
_id 默认返回
两种模式不能混用,只能全 0 或者全 1
要指定 project 参数不需要 query 参数时,query 参数可以用 {} 代替。
替换文档
db.<collection_name>.save(document)
如果 document 指定 _id 字段,就回用该文档替换之前 _id 字段相同的文档,不指定就和 insert 操作一样。
更新文档
db.<collection_name>.update(
<query_obj>
<update_obj>
{
upsert: <bool>,
multi: <bool>,
writeConcern: <document>
}
query_obj: update 的查询条件
update_obj: 需要更新的对象
upsert: 可选,true 表示不存在就插入,默认为 false
multi: 可选,true 表示把所有查出来的结果都更新, false 只更新查找到的第一条。
writeConcern:可选,抛出异常的级别。
例如
db.mycol.update({“name”: “Laily”}, {$set:{“name”:”Laily1"}})
更新操作符
$inc
用法 {$inc:{field:value}}
作用:对数值字段的某个 field 增加 value,如果没有该字段就直接赋值。
$set
用法 {$set:{field:value}}
作用:把某个 field 的值设为 value
$unset
用法 {$unset: {field1:””,…}} 可以有多个 field
作用,删除 field
$push
用法 {$push: {field : value}}
作用 把 value 追加到 field 里,field 必须是数组类型,如果 field 不存在,会自动插入一个数组类型。
$pushAll
用法 {$push : {field : <value_array>}}
和 push 一样,但是可以追加多个 value。
$addToSet
用法 {$addToSet : {field : value}}
加一个值 value 到数组 field 内,只有当该值不在数组中时才添加。
$pop
{$pop : {field : -1}} 删除数组 field 里的第一个元素
{$pop : {field : 1}} 删除数组 field 里的最后一个元素
$pull
{$pull : {field : value}}
从数组 field 里删除一个等于 value 的值
对应的也有 $pullAll
$rename
{$rename : {old_field_name : new_filed_name}}
对字段进行重命名
删除文档
db.<collection_name>.remove(
<query>,
{
justOne : <boolean>
writeConcern : <document>
}
)
query: 可选,删除文档的条件
justOne:可选,如果设为 true 或者 1,则只删除一个文档。
writeConcern:抛出异常的级别。
writeConcern
WriteConcern.NONE:没有异常抛出
WriteConcern.NORMAL:仅抛出网络错误异常,没有服务器错误异常
WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。
WriteConcern.MAJORITY: 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。
WriteConcern.FSYNC_SAFE: 抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。
WriteConcern.JOURNAL_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件。
WriteConcern.REPLICAS_SAFE:抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作。