基本操作:增删改查
一、增
增: insert
介绍: mongodb存储(单位)的是文档,. 文档是json格式的对象.
语法: db.collectionName.isnert(document);
1、增加单篇文档
db.collectionName.insert({title:’nice day’});
2、增加单个文档,并指定_id
db.collectionName.insert({_id:8,age:78,name:’lisi’});
3、增加多个文档
db.collectionName.insert(
[
{time:'friday',study:'mongodb'},
{_id:9,gender:'male',name:'QQ'}
]
)
二、删
删:remove
语法: db.collection.remove({}查询表达式}, 选项);
选项是指 {true/false},是否只删一行, 不写默认为false
注意
1: 查询表达式依然是个json对象
2: 查询表达式匹配的行,将被删掉.
3: 如果不写查询表达式,collections中的所有文档将被删掉.(db.stu.remove({});)
例1: db.stu.remove({stunum:’001’});
删除stu表中 sn属性值为’001’的文档
例2: db.stu.remove({gender:’f’});
删除stu表中gender属性为f的文档,删除符合的所有行.
例3: db.stu.remove({gender:’f’},true);
删除stu表中gender属性为f的文档,只删除一行
.
三、改
改 update操作
改谁? --- 查询表达式
改成什么样? -- 新值 或 赋值表达式
操作选项 ----- 可选参数
语法: db.collection.update(}查询表达式},{新值},{选项option});
例:
db.news.update({name:'QQ'},{name:'MSN'});
是指选中news表中,name值为QQ的文档,并把其文档值改为{name:’MSN’},
结果: 文档中的其他列也不见了,改后只有_id和name列了.修改的那列的其他东西也没有了
即--新文档直接替换了旧文档,而不是修改
如果是想修改文档的某列,可以用$set关键字
db.collectionName.update(query,{$set:{name:’QQ’}})
修改时的赋值表达式
$set 修改某列的值
$unset 删除某个列
$rename 重命名某个列
$inc 增长某个列
$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段.
{
name:'wukong',
jingu:true,
sex:'m'age:500}
需求:修改name为dzsff
去掉jingu
将sex重命名为gender
将age自增一岁
(
$set:{name:'dzsff'},
$unset:{jingu:1},
$rename:{sex:'gender'},
$inc{age:16}
)
db.stu.update({name:'wukong'},{$set:{name:'dzsff'},$unset:{jingu:1},$rename:{sex:'gender'},$inc:{age:16}});
上面的 $setOnInsert要与option一起使用:
$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段.
option的作用:
{upsert:true/false,multi:true/false}
1、upsert---是指没有匹配的行,则直接插入该行.(和mysql中的replace一样)
例:db.stu.update({name:'wuyong'},{$set:{name:'junshiwuyong'}},{upsert:true}); 如果没有{upsert:true}时,先查看表达式符合则修改,没有也不添加
如果有name=’wuyong’的文档,将被修改
如果没有,将添加此新文档
2、multi: 是指修改多行(即使查询表达式命中多行,默认也只改1行,如果想改多行,可以用此选项)
例:
db.stu.update({gender:'m'},{$set:{gender:'male'}},{multi:true});
则把stu中所有gender:'m'的文档,都修改
四、查
查: find, findOne
语法: db.collection.find(查询表达式,查询的列);
db.collections.find(表达式,{列1:1,列2:1});
例1:db.stu.find()
查询所有文档 所有内容
例2: db.stu.find({},{gender:1})
查询所有文档,的gender属性 (_id属性默认总是查出来,默认所有都查出来(有无性别都被查出来))
例3: db.stu.find({},{gender:1, _id:0})
查询所有文档的gender属性,且不查询_id属性
例3: db.stu.find({gender:’male’},{name:1,_id:0});
查询所有gender属性值为male的文档中的name属性