MongoDB的增删改查
增
向集合插入一个新文档db.collection.insertOne()
db.collection.insertOne(
// collection为集合的名字,如果集合不存在则会自动创建一个集合
<document>, // 具体插入的数据
{
writeConcern: <document> // 可选参数,可以不写
}
)
向集合插入一个多个文档db.collection.insertMany()
db.collection.insertMany(
[ <document 1> , <document 2>, ... ], // 具体插入的数据
{
writeConcern: <document>,
ordered: <boolean>
}
)
//document:要写入的文档。
//writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
//ordered:指定是否按顺序写入,默认 true,按顺序写入。
查
语法db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
1、查询全部
db.users.find()
或者db.users.find().pretty()
二者的区别在于pretty() 方法以格式化的方式来显示所有文档
2、按条件查询
等于 , 大于 , 小于等于 , 大于等于 ,等于, 不等于
等于:{<key>:<value>}
例子:db.users.find({age:20}).pretty()
大于:{<key>:{$gt:<value>}}
例子:db.users.find({age:{$gt:21}}).pretty()
小于:{<key>:{$lt:<value>}}
例子:db.users.find({age:{$lt:22}}).pretty()
小于等于:{<key>:{$lte:<value>}}
例子:db.users.find({age:{$lte:22}}).pretty()
大于等于:{<key>:{$gte:<value>}}
例子:db.users.find({age:{$gte:21}}).pretty()
不等于:{<key>:{$ne:<value>}}
例子:db.users.find({age:{$ne:22}}).pretty()
AND 条件
db.collection.find({key1:value1, key2:value2}).pretty()
OR 条件
db.collection.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
例子:
db.users.find(
{
$or:[
{age:20},
{sex:'女'}
]
}
)
AND 和 OR 联合使用
db.users.find({
age:{$lt:23},
$or:[
{name:'张三'},
{sex:'女'}
]
})
改
update() 方法
update() 方法用于更新已存在的文档
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
//query : update的查询条件,类似sql update查询内where后面的。
//update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
//upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
//multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
//writeConcern :可选,抛出异常的级别。
例子:
db.users.update({name:'张三'},{$set:{age:25}})
save()方法
save() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
例子:
db.users.save({
"_id" : ObjectId("5f43873e333b0000f400710a"),
age:24,
name:'李四',
sex:'女'
})
// 用save的时候所有的数据都要填写,不然没有填写的字段会为null
删
db.collection.remove(
<query>,
<justOne>
)
//query :(可选)删除的文档的条件。
//justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
//writeConcern :(可选)抛出异常的级别。
例子:
db.users.remove({name:'张三'}) // 删除指定数据
db.col.remove({}) // 删除所有数据