- 插入
--插入单数据
db.集合名称.insertOne(JSON对象)
--插入多条数据
db.集合名称.insertMany([JSON 1],[JSON 2],...[JSON n])
--示例:
db.name.insertOne({name:"小明"});
db.name.insertMany([{name:"张三"},{name:"李四"},{name:"王五"}]);
- 查询
find 是MongDB 中查询数据的基本指令,相当于SQL中的SELECT
find返回的是游标
--查询所有
db.集合名称.find()
--查询指定数据 查询条件
db.集合名称.find(JSON)
--组合条件查询
db.集合名称.find({key:value,key:value})
--and查询
db.集合名称.find({$and:[{key:value},{key:value}]})
--or
db.集合名称.find({$or:[{key:value},{key:value}]})
--正则查询
db.集合名称.find({key:/^B/})
--使用find搜索子文档
--先插入数据
db.fruit.insertOne({
name:"马六",
from:{
country:"中国", province:"北京"
}
})
--查询
db.fruit.find({"from.country" : "中国"})
--查询子文档需要写子文档路径 写法不正确
db.fruit.find({"from" : {country : "中国"}})
--示例:
db.name.find();
db.name.find({name:"张三"});
--find支持对数组中元素搜索
--插入数据
db.student.insert([
{"name" : "张三",course: ["语文","数学"]},
{"name" : "李四",course: ["语文","英语"]},
])
--查询
db.student.find({course: "语文"})
sb.student.find( {$or: [{course: "语文"}, {course: "英语"}]} )
--find搜索数组中对象
--插入数据
db.classs.insertOne({
"title" : "高三一班",
"students" : [
{"name" : "李四", "age" : 18, "sex" :"男"},
{"name" : "王五", "age" : 19, "sex" :"男"},
{"name" : "李华", "age" : 18, "sex" :"女"}
]
})
--查找年龄是18记录
db.classs.find({"students.age" :18})
--查询对象多个字段
db.getCollection('classs').find({
"students.age":18,
"students.sex":"女"
})
db.getCollection('classs').find({
"students":{
$eleMatch:{"age":18,"sex":"男"}
}
})
--控制find返回字段
--find可以指定只返回指定的字段
-- _id字段必须明确指明不返回,否则默认返回
--再MongoDB中称为投影(projection)
-- 不返回id 返回title
db.movies.find({"age",18),{"_id":0,title:1}})
查询条件对照表
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 BULL | {a: {$exists: false}} |
a IN (1,2,3) | {a: {$in: [1,2,3]}} |
查询逻辑对照表
$lt | 存在并小于 |
$lte | 存在并小于等于 |
$gt | 存在并大于 |
$gte | 存在并大于等于 |
$ne | 不存在或存在但不等于 |
$in | 存在并在指定数组中 |
$nin | 不存在或不在指定数组中 |
$or | 匹配两个或多个条件中的一个 |
$and | 匹配全部条件 |
- 修改
db.集合名称.update(<查询条件>,<更新字段>)
使用updateOne表示无论条件匹配多少条记录 始终至更新第一条
使用updateMany 表示条件匹配多少条就更新多头条
updateOne/updateMany 要更新条件部分必须具有以下之一,否则会报错
$set/$unset
$push/$pushAll/$pop
$pull/$pullAll
$addToSet
update更新数组
$push 增加一个对象到数组底部
$pushAll 增加多个对象到数组底部
$pop 从数组底部删除一个对象
$pull 如果匹配指定的值,从数组中删除相应的对象
$pullAll 如果匹配任意的值,从数组中删除相应对象
$addToSet 如果不存在则增加一个值到数组
- 删除
--删除a等于1
db.集合名称.remove({a:1})
--删除a小于5
db.集合名称.remove({a:{$le:5}})
--删除所有记录
db.集合名称.remove({})
--不传参数会报错
db.集合名称.remove()
- drop
--删除一个集合 集合中的数据会被全部删除、索引也会被删除
db.集合名称.drop()
--删除数据库 数据库相应文件 磁盘空间被释放
db.dropDatabase()
--删除数据库
db.colToBeDropped.drop()