- Published on
MongoDB 基础操作指南:插入、查询、更新与删除语法详解
- Authors
- Name
- Liant
Mongo基本操作
- 插入一条数据
db.集合名称.insertOne(json内容)
- 批量插入数据
db.集合名称.insertMany([json内容,json内容,json内容,json内容])
- find查询
// 单条件查询
db.集合名称.find({"year":1975})
// 多条件查询
db.集合名称.find({"year":1975,"title:"Batman"})
// and多条件查询
db.集合名称.find({$and:[{"year":1975},{"title:"Batman"}]})
// 多条件or(或)查询
db.集合名称.find({$or:[{"year":1975},{"title:"Batman"}]})
// 正则查询,title字段里以B开头的
db.集合名称.find({"title":/^B/})
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]}}
查询逻辑运算符
- $lt: 存在并小于
- $lte: 存在并小于等于
- $gt: 存在并大于
- $gte: 存在并大于等于
- $ne: 不存在或存在但不等于
- $in: 存在并在指定数组中
- $nin: 不存在或不在指定数组中
- $or: 匹配两个或多个条件中的一个
- $and: 匹配全部条件
在数组中搜索对象的多个字段时,如果使用$elemMatch,它表示必须是同一个子对象满足多个条件。
db.集合名.find({字段名:{$elemMatch:{"子字段1":"值1","子字段2":"值2"}}})
- 控制find返回的字段
db.集合名.find({"字段名":"值"},{"_id":0,"title":1}) // 表示不返回id,只返回title
使用remove删除文档
- remove命令需要配合查询条件使用
- 匹配查询条件的文档会被删除
- 指定一个空文档条件会删除所有文档
以下示例:
// 删除a等于1的记录
db.testcol.remove({a:1})
// 删除a小于5的记录
db.tetscol.remove({a:{$lt:5}})
// 删除所有记录
db.testcol.remove({})
// 报错
db.tetscol.remove()
使用update更新文档
update操作执行格式:
db.集合.update(查询条件,更新字段)
字段更新
// 这个操作是匹配name值为apple的,如果有字段from的话,将字段值改为China,如果没有就添加该字段。
db.集合.updateOne({name:"apple"},{$set:{from:"China"}})
update说明
- 使用
updateOne
表示无论条件匹配多少条记录,始终只更新第一条;
- 使用
- 使用
updateMany
表示条件匹配多少条就更新多少条;
- 使用
updateOne/uodateMany
方法要求更新条件部分必须具有以下之一,否则将报错:
$set/$unset
$push/$pushAll/$pop
$pull/$pullAll
$addToSet
上述解释:
$push: 增加一个对象到数组底部
$pushAll: 增加多个对象到数组底部
$pop: 从数组底部删除一个对象
$pull: 如果匹配指定的值,从数组中删除相应的对象
$pullAll: 如果匹配指定的值,从数组中删除相应的对象
$addToSet: 如果不存在则增加一个值到数组
- 删除表(集合)或者库
db.集合.drop() // 删除表
// 进入库
use test
// 显示当前库
db
// 删除库
db.dropDatabase()
- 注:上述删除都是危险操作,一般不要轻易使用