常用的语句用的最多的无非就是增、删、改、查
MongoDB数据存储格式是bson,其实这种格式除了几个特殊的类型,其他的就是json的格式。所以部分数据显示可以用json格式化。在此推荐个网站可以格式化http://www.bejson.com/,虽然它要报json格式异常,但是格式还是转好了的
转换前:
转换后:
1.增
添加数据有3种方法:
1.insert
db.Client.insert({_id:new ObjectId(),Name:"xx",Sex:0,Created:new Date()});
_id可以不带,系统会自己给你加上,如果有特殊要求可以自己写
2.update
db.Client.update({ Name : "xxx" }, { $set : { Sex: 1 } }, { upsert : true });
如果Client表中没有 Name : "xxx" 的记录则会新加一条记录,如果有记录则更新 Sex: 1
upsert 为true的意思是如果没有找到对应的记录则添加,如果找到则更新。该参数默认情况下为false,则没有找到数据就不添加,也不更新
3.save
db.Client.save({Name:"xx",Sex:0,Created:new Date()});
添加时不用带_id,否则它会去更新_id对应的其他值
特别提醒:
new ObjectId() 是新建ObjectId的意思
new Date() 获取当前时间,系统默认的是0时区
2.删
remove
db.Client.remove({Name:"xxx"});
删除满足{Name:"xxx"}条件的所有数据
3.2里新加了2种新的删除方法
db.collection.deleteOne() 删除满足条件的第一个文档
db.collection.deleteMany() 删除满足条件的所有文档,执行之后会返回删除的个数 如:{ "acknowledged" : true, "deletedCount" : 3 }
这2种方法还没用过,先记录一下
3.改
修改数据有3种方法:
1.update
db.Client.update({Name:"xxx"},{$set:{Sex:0}},{multi:true})
查询条件:{Name:"xxx"}
修改项:{$set:{Sex:0}} 其中$set可以更换为其他修改器 $set为更新 $inc为累加($inc不能应用于非数字数据) $unset 删除指定的列
其他的$push $ne $addToSet $pop $pull 修改器还没仔细研究过,以后再来补充和细化
是否批量更新:{multi:true} 如果为false则只更新满足条件的第一个文档,为true则更新所有满足条件的
2.save
db.Client.save({_id:new ObjectId("574fa87df2e2723e85e624a3"),Name:"xx",Sex:0,Created:new Date()});
带上_id就可以更新指定id的所有列
特别提醒:
如果用save进行保存时少了Created列,那么更新后的数据就会没有Created列
3.findAndModify 更新并返回更新的数据
db.Client.findAndModify({query:{Sex:0},update:{$set:{Sex:1}}});
查询条件:query为键,查询条件为值,如上所示
修改项:update为键,修改列和项为值,如上所示,其中$set也可更换为其他修改器
需要注意的是,如果查询结果是多个,它只会更新满足条件的第一个文档并返回
4.查
一般比较常用的是find、findOne,下一篇详细来写