以下都是基于MongoShell进行操作
1.使用insert进行插入操作
示例:
db.<集合>.insertOne(<JSON对象>)
db.<集合>.insertMany([<JSON1>,<JSON2>,...<JSON n>])
例如:
db.fruit.insertOne({name:"apple"})
db.fruit.insertMany([
{name:"apple"},
{name:"pear"},
{name:"orange"}
])
2.使用find查询文档
2.1 关于find
2.1.1 find是MongoDB中查询数据的基本指令,相当于SQL中的SELECT
2.1.2 find返回的是游标
2.2 示例
db.movie.find({"year":1975}) //单条件查询
db.movie.find({"year":1976,"title":"Batman"}) //多条件and查询
db.movie.find({$and:[{"title":"Batman"},{"category":"action"}]}) //and的另一种形式
db.movie.find({$or:[{"year":1989,{"title":"Batman"}}]}) //多条件or查询
db.movie.find({"title":/^B/}) //按正则表达式查找 B开头的
SQL和MQL查询对照表
SQL | MQL |
a == 1 | { a: 1 } |
a <> 1 | { a: {$ne:1 } } |
a > 1 | { a: {$gt: 1} } |
a >= 1 | { a: {$gte: 1} } |
a < 1 | { a: {$lt: 1} } |
a <= 1 | { a: {$lte: 1} } |
a = 1 and b = 1 | { a: 1,b: 1 } 或 { $and: {a: 1},{b: 1} } |
a = 1 or b = 1 | { $or: [{a: 1},{b: 1}]} } |
a is null | { a: {$exists: false} } |
a in (1,2,3) | { a: {$in:[1,2,3]} } |
SQL | MQL |
$lt | 存在并小于 |
$lte | 存在并小于等于 |
$gt | 存在并大于 |
$gte | 存在并大于等于 |
$ne | 不存在或存在但不等于 |
$in | 存在并在指定数组中 |
$nin | 不存在或不在指定数组中 |
$or | 匹配两个或多个条件中的一个 |
$and | 匹配全部条件 |
2.3 使用find搜索子文档
2.3.1 支持"field.sub_field"的形式查询子文档
假设有如下数据
db.fruit.insertOne({
"name":"apple",
"from":{
country:"China",
province:"Beijing"
}
})
db.fruit.find({"from.country":"China"}) //查询from下counrty是China的文档
db.fruit.find({"from":{country:"China"}}) //错误写法
3.使用remove删除文档
- remove命令需要配合查询条件使用
- 匹配到查询条件的文档会被删除
- 指定一个空文档条件会删除所有文档
3.1 示例
db.movie.remove({a:1}) //删除a等于1的记录
db.movie.remove({a:{$lt:5}}) //删除a小于5的记录
db.movie.remove({}) //删除所有记录
db.movie.remove() //会报错
4.使用update更新文档
4.1 示例
db.<集合>.update(<查询条件>,<更新字段>)
db.fruit.updateOne({name:"apple"},{$set,{name:"banana"}}) //将name为apple的记录更新为banana
db.fruit.updateOne({name:"apple"},{$set,{from:"China"}}) //将name为apple的记录的from字段更新为China,如果没有这个字段则会新增上
- 使用updateOne表示无论条件匹配了多少记录,始终只更新第一条
- 使用updateMany表示条件匹配多少条就更新多少条
- updateOne/updateMany方法要求更新条件部分必须有以下之一,否则会报错
- $set/$unset
- $push/$pushAll/$pop
- $pull/$pullAll
- $addToSet
$push | 增加一个对象到数组底部 |
$pushAll | 增加多个对象到数组底部 |
$pop | 从数组底部删除一个对象 |
$pull | 如果匹配指定的值,从数组中删除相对应的对象 |
$pullAll | 如果匹配任意的值,从数据中删除对应的对象 |
$addToSet | 如果不存在则增加一个值到数组 |