mongoDB(三):数据的更新、插入、删除
mongoDB(3):数据的更新、插入、删除
>插入文档







































>插入文档
db.[documentName].insert({})
字符串要加上“”
插入的数据一般会有默认的id
但是我们可以手动给他指定一个id
>批量插入
不知道是版本问题还是(我的mongo是较新的3.2,而我学习资料的2.x版本的,2.x版本的显示如下批量插入不成功,会当成一个数据处理,必须用js的循环才可以,但是我实验是成功的)
db.persons.insert([{"name":"123"},{"age":1}])
>通过for循环实现批量插入文档
>save操作:
与insert的区别是,当遇到相同_id时,save会完成保存操作,而insert会报错
而save会更新它
>删除列表中所有数据
db.[documentName].remove({})
注意:需要传递空的query给他(这里{}里面可以写上你想删除的某项,就可以逐项删除)
集合的本身和索引不会被删除
>逐条删除
>更新 替换方式
db.[documentName].update({查询器},{修改器})
>主键冲突不会更新
上面待更新为id=2的与原数据中id为2的主键冲突了
所以没更新
>insertOrUpdate操作
查询器查出来数据就执行更新,查不出来就插入
db.[documentName].update({查询器}.{修改器},true)
>批量更新操作。
默认查询出多条匹配数据待更新的话 只更新第一条
实现批量更新如下
db.[documentName].update({查询器}.{修改器},false,true)
第一个false表示不使用insertOrUpdate,第二个true表示使用批量更新
批量更新要与$set一起使用
>修改器
$set之前说过了 这里不重复了
$inc{}
1表示原数据追加1 -1表示减1
$unset{}删除某属性
$push()
如果push的键不存在,则会以数组的形式建新的 如果与已有的不是数组的一样,则会冲突,失败
$pushAll批量
$pop
注意-1表示删除第一个 1表示倒数第一个
也可以删除一个指定的键值 这里不举例了
>$addToSet与$each结合完成批量数组更新
db.[documentName].update({_id:1000},{$addToSet:{books:{$each:["js","DB"]}}})
$each会循环后面的数组把每一个数值进行$addToSet()
而$pullAll不会判断重复,$each会判断
看出,重复的是不会追加的