MongoDB笔记-增删改查

(1).Document数据插入
1.插入文档

db.[collection].insert({nanme:"1"});

2.批量插入文档
shell的for循环

db.[collection].insert([{},{},...])

3.Save操作
save操作和insert操作区别在于当遇到_id相同的情况下
save完成更新和插入操作
insert只能完成插入操作,_id一样时,无法插入

(2).Document数据删除
1.删除列表中的所有数据
语法: db.[collection].remove(查询表达式, 选项);
选项是指{justOne:true/false},是否只删一行,默认为false

db.[collection].remove({});
db.[collection].remove(query);

query:是查询表达式,如果只是{}表示删除全部
例1:删除集合text中的name等于uspcat的记录

 db.text.remove({name:"uspcat"});

例2:删除stu集合中的gender属性为m的文档,只删除1行

db.stu.remove({gender:'m',true});

2.小技巧
如果你想清除一个数据量十分庞大的集合
直接删除该集合并且重新建立索引的方法
比直接用remove的效率要高很多

(3).Document数据更新
语法: db.[collection].update(查询表达式,新值,选项);
1.强硬的文档替换式更新操作

db.[collection].update({查询器},{修改器})

强硬的更新会用新的文档代替老的文档

2.主键冲突时会报错并且停止更新操作
因为是强硬替换,当替换的文档和已有文档的ID冲突的时候
则系统会报错

3.insertOrUpdate操作
目的:查询器查出来数据就执行更新操作,查不出来就替换操作
做法:db.[collection].update({查询器},{修改器},true);

4.批量更新操作
默认情况当查询器查询多条数据的时候,默认就修改第一条数据
如何实现批量修改:

db.[collection].update({查询器},{修改器},false,true);

5.如果是想修改文档的某列,可以用$set关键字

db.[collection].update(query,{$set:{name:'aa'}});

修改时的赋值表达式
$set:修改某列的值
$unset:删除某个列
$rename:重命名某个列
$inc:增长某个列
multi:是指修改多行(即使查询表达式命中多行,默认也只改1行,如果想改多行,可以用此选项)
例:把news中所有age=21的文档,都修改

db.news.update({age:21},{$set:{age:22}},{multi:true})

(4).Document数据查询
语法: db.[collection].find(查询表达式,查询的列);
1.查询所有文档,所有内容

db.stu.find()

2.查询所有文档的gender属性(_id属性默认总是查出来)

db.stu.find({},{gender:1});

3.查询所有文档的gender属性,且不查询_id属性

db.stu.find({},{gender:1,_id:0});

4.查询所有gender属性值为male的文档中的name属性

db.stu.find({gender:'male'},{name:1,_id:0});

查询表达式
1.最简单的查询表达式
{field:value}是指查询field列的值为value的文档;

2.$ne --> !=查询表达式

{field:{$ne:value}}

作用:查询field列的值不等于value的文档

3.$nin --> not in
作用:查询field列的值不在[xx,xx…]中

4.$all
语法: {field:{$all:[v1,v2..]}}
是指取出field列是一个数组,且至少包含v1,v2值

5.$exists
语法: {field:{$exists:1}}
作用:查询出含有field字段的文档

6.$nor

{$nor,[条件1,条件2]}

作用:是指所有条件都不满足的文档为真返回

8.用$where表达式来查询

db.goods.find({$where:'this.cat_id!=3 && this.cat_id!=1'});

注意:用$where查询时,mongoddb是把bson结构的二进制数据转换为
json结构的对象,然后比较对象的属性是否满足表达式,所有消耗额外
的性能,速度较慢。

猜你喜欢

转载自blog.csdn.net/hundan_520520/article/details/81002239