文档¶
插入文档¶
-
单条文档
-
多条文档
-
脚本方式
删除文档¶
> db.COLLECTION.remove(
<query>, # 筛选条件,不带条件时须写个空对象,表示删除所有
{
justOne: <bool>, # 默认false,为 true 时只删除一条文档
writeConcern: <document> # 抛出异常的级别
}
)
删除满足条件的文档:
删除所有:更新文档¶
> db.COLLECTION.update(
<query>, # 筛选条件,不带条件时须写个空对象
<update data>, # 更新的内容,相当于 sql 中 set 后面部分
{
upsert: <boolean>, # 如果文档存在则更新,不存在则插入。默认 false 不插入
multi: <boolean>, # true更新所有符合条件的文档,false只更新一条。默认false
writeConcern: <document> # 抛出异常的级别
}
)
# 将 name 为 boii 的文档删除,然后插入后面的记录
> db.users.update({name: "boii"}, {name: 'eva', bir: new data()})
# 保留原来的记录,只更新 name 字段,但只更新一条数据
> db.users.update({name: "xiaohei"}, {$set: {name: "alice"}})
# 保留原来的记录,只更新 name 字段,但更新所有符合条件的
> db.users.update({name: "xiaohei"}, {$set: {name: "alice"}}, {multi: true})
# 保留原来的记录,只更新 name 字段,更新所有符合条件的,没有条件符合时插入
> db.users.update({name: "xiaohei"}, {$set: {name: "alice"}}, {multi: true, upsert: true})
查询文档¶
操作 | 格式 | 范例 | 对应 SQL |
---|---|---|---|
等于 | {key: value} | db.col.find({name: 'boii'}) | where name = 'boii' |
小于 | {key: {$lt: value}} | db.col.find({age: {$lt: 50}}) | where age < 50 |
小于等于 | {key: {$lte: value}} | db.col.find({age: {$lte: 50}}) | where age <= 50 |
大于 | {key: {$gt: value}} | db.col.find({age: {$gt: 50}}) | where age > 50 |
大于等于 | {key: {$gte: value}} | db.col.find({age: {$gte: 50}}) | where age >= 50 |
不等于 | {key: {$ne: value}} | db.col.find({age: {$ne: 50}}) | where age != 50 |
AND¶
对应 SQL 的WHERE key1 = value1 AND key2 = value2
OR¶
对应 SQL 的WHERE key1 = value1 OR key2 = value2
AND + OR¶
对应 SQL 的WHERE key1 = value1 AND ( key2 = value2 OR key3 = value3 )
模糊查询¶
正则表达式以/
开头和结尾,对应 SQL 中的 WHERE key LIKE '%regex%'
相当于SQL的 WHERE name LIKE '%bo%'
排序¶
1 升序,-1 降序对应 SQL 的 ORDER BY key ASC
、ORDER BY key DESC
分页¶
对应 SQL 的LIMIT start, rows
总条数¶
对应 SQL 的SELECT count(1) FROM ...
去重¶
对应 SQL 的SELECT DISTINCT 字段 FROM ...