欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MongoDB笔记02-增删改查操作

程序员文章站 2022-05-08 08:35:03
...

【 基本操作增删改查】

增: insert

介绍: mongodb存储的是文档,. 文档是json格式的对象.

语法: db.collectionName.isnert(document);

1: 增加单篇文档

Db.user.insert({title:’nice day’});

MongoDB笔记02-增删改查操作

2: 增加单个文档,并指定_id

Db.user.insert({_id:8,age:78,name:’lisi’});

MongoDB笔记02-增删改查操作

3.增加一个其他格式的文档

db.user.insert({_id:3,name:'hmm',hobby:['basketball','football'],intro:{'title':'My intro',content:'from china'}});

MongoDB笔记02-增删改查操作

4.增加多个文档

db.collectionName.insert([

    {time:'friday',study:'mongodb'},

    {_id:9,gender:'male',name:'QQ'}

])

MongoDB笔记02-增删改查操作

 

删:remove

语法: db.collection.remove(查询表达式, 选项);

选项是指 {justOne:true/false},是否只删一行, 默认为false

◆注意

1: 查询表达式依然是个json对象

2: 查询表达式匹配的行,将被删掉.

3: 如果不写查询表达式,collections中的所有文档将被删掉.

例1: db.stu.remove({sn:’001’}); #删除stu表中 sn属性值为’001’的文档

演示:删除user表中 name值为“lisi”的数据:

MongoDB笔记02-增删改查操作

如果要删除某个表中的所有数据,使用 db.user.remove(); 相当于MySQL的delete from user; 这样的操作很危险!!

在test库中增加stu表,并插入一些数据:

db.stu.insert([{name:'songjiang',gender:'m'},{name:'dalang',gender:'m'},{name:'jinlian',gender:'f'},{name:'poxi',gender:'f'}]);

MongoDB笔记02-增删改查操作

例2.1: db.stu.remove({gender:’f’}); #删除stu表中gender属性为f的文档,会删除所有符合条件的.

MongoDB笔记02-增删改查操作

例2.2: db.stu.remove({gender:’m’},true); #删除stu表中gender属性为m的文档,只删除1行.

MongoDB笔记02-增删改查操作

 

改 update操作

改谁? --- 查询表达式

改成什么样? -- 新值 或 赋值表达式

操作选项 ----- 可选参数

 

语法: db.collection.update(查询表达式,新值,选项option);

例: db.news.update({name:'QQ'},{name:'MSN'}); 是指选中news表中,name值为QQ的文档,并把其文档值改为{name:’MSN’},

[案例] 尝试将上面仅有的一条记录中的“dalang”改成 “wudalang”,但是结果却发现“gender”字段不见了!

db.stu.update({name:'dalang'},{name:'wudalang'});

MongoDB笔记02-增删改查操作

结果: 文档中的其他列也不见了,改后只有_id和name列了. 即--新文档直接替换了旧文档,而不是修改

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

db.collectionName.update(query,{$set:{name:’QQ’}})

[备注]为了方便测试,恢复之前的4条数据。

MongoDB笔记02-增删改查操作

然后将最后一行的“poxi”改为 “yanpoxi”

db.stu.update({name:'poxi'},{$set:{name:'yanpoxi'}});

MongoDB笔记02-增删改查操作

*** 修改时的赋值表达式

$set 修改某列的值
$unset 删除某个列
$rename 重命名某个列
$inc 增长某个列
$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段(2.4以上版本的Mongodb才可用).

[备注]为了测试上面的几种情况,添加如下数据:

db.stu.insert({name:'wukong',jingu:true,sex:'m',age:500});

MongoDB笔记02-增删改查操作

接下来,执行多种修改操作:

db.stu.update({name:'wukong'}
{

    $set:{name:'dzsf'},

    $unset:{jingu:1},

    $rename:{sex:'gender'},

    $inc:{age:16}

});

MongoDB笔记02-增删改查操作

◆ 选项Option的作用: {upsert:true/false,multi:true/false}

multi: 是指修改多行(即使查询表达式命中多行,默认也只改1行,如果想改多行,可以用此选项)

例:db.news.update({age:21},{$set:{age:22}},{multi:true}); #则把news中所有age=21的文档,都修改

[案例演示]将所有的gender的’m' 改为 ‘man’,修改多行:db.stu.update({gender:'m'},{$set:{gender:'male'}},{multi:true});

MongoDB笔记02-增删改查操作

upsert---是指没有匹配的行,则直接插入该行,若有则更新.(和mysql中的replace into 一样)

例:db.stu.update({name:'wuyong'},{$set:{name:'junshiwuyong'}},{upsert:true}); #如果有name=’wuyong’的文档,将被修改;如果没有,将添加此新文档

MongoDB笔记02-增删改查操作

◆ $setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段(2.4以上版本的Mongodb才可用).

例:db.stu.update({name:'wusong'},{$set:{name:'xingzhewusong'},$setOnInsert:{gender:'male'}},{upsert:true});

#没有’wusong’的文档被修改,因此直接插入该文档,并且插入时加入gender字段

MongoDB笔记02-增删改查操作

 

《关于insert和update的资料》

MongoDB笔记02-增删改查操作

Update时可用的操作符

例:

->db.user.insert({name:'lisi',age:12,sex:'male',height:123,area:'haidian'});
->db.user.update({name:'lisi'},{$set:{area:'chaoyang'},$unset:{height:1},$inc:{age:1},$rename:{sex:'gender'}});
> db.user.find();

{ "_id" : ObjectId("51fc01c4f5de93e1f2856e33"), "age" : 13, "area" : "chaoyang", "gender" : "male", "name" : "lisi" }
$setOnInsert ->相当于mysql中的列的默认值

 

查: find, findOne

语法:

db.collection.find(查询表达式,查询的列);

Db.collections.find(表达式,{列1:1,列2:1});

例1:db.stu.find(); #查询所有文档 所有内容

例2: db.stu.find({},{gendre:1}); #查询所有文档,的gender属性 (_id属性默认总是查出来)

MongoDB笔记02-增删改查操作

例3: db.stu.find({},{gender:1, _id:0}); #查询所有文档的gender属性,且不查询_id属性

MongoDB笔记02-增删改查操作

例4: db.stu.find({gender:’male’},{name:1,_id:0}); #查询所有gender属性值为male的文档中的name属性

MongoDB笔记02-增删改查操作

相关标签: MongoDB笔记