查看插入数据:
image.png
现在有两条数据:
image.png
插入定义好的变量:
image.png
查看结果:
image.png
查看结果:
image.png
如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
验证:当使用insert,并且指定花有缺的id,更新名称,执行报错主键冲突:
image.png
使用save则已是更新成功:
image.png
查看结果:
image.png
默认更新一条:写法一:
image.png
更新结果:
image.png
写法二:
image.png
更新结果:
image.png
写法三:可以看到写法一的第一个set没有生效,修改如下:
image.png
查看执行结果:
image.png
疑问点sex我们设置的和之前的值一样不能区分是否变更,修改如下执行:
image.pngimage.png
果然也有问题;总结:如果要跟新多个字段只能用写法二的方式;
查看结果:
image.png
修改设计部为产品部:
image.png
执行结果:
image.png
注:$这里是找到满足条件的子元素下标为name的字段
给我添加一辆宝马:
image.png
查看结果:
image.png
修改宝马为使用了三年:不能这么做:
image.png
结果:
image.png
会导致对象覆盖,数据丢失。应该这么做:我们先还原数据:
db.getCollection('protest').update( {"name":"邵志奇"},//条件 {$set:{"carinfo":{"name":"宝马X","price":"100万","use":"2年"}}}//要更新的字段 ); image.png更新语句:
image.png
更新结果:
image.png
这里是单个对象,所有不适用$,使用后会报错Update 跟新多条:更新所有男性,分到A组:可以看到只有一条数据更新:
image.png image.png
可以总结下update语法:
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )query : update的查询条件,类似sql update查询内where后面的。update : update的对象和一些更新的操作符(如inc...)等,也可以理解为sql update查询内set后面的upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。writeConcern :可选,抛出异常的级别。修改语法如下:
image.png
查看更新结果:
image.png
也可简写:
image.png
跟新结果:
image.png
也可以用updateMany:这样就不用在写后面的参数了
image.png
更新结果:
image.png
当然updateOne是更新单个文档了
默认删除满足条件的全部remove已近过时:官方推荐使用deleteOne与deleteMany删除如下数据:
image.png语法:
image.png查看结果:
image.png
可在语法上加1限制删除一条
image.png
Remove语法:
db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } )query :(可选)删除的文档的条件。justOne : (可选)如果设为 true 或 1,则只删除一个文档。writeConcern :(可选)抛出异常的级别。
语法类似remove,么有后面的限制条件了
简单语法:
db.getCollection('protest').find({"_id":ObjectId("5af4f87d222a56e8480bd0e7")})之前准备的全部数据:
image.png
Or:查找A组或者C组的全部成员:
image.png
准备以下数据:
image.png
查询语句:
db.getCollection('protest').find({"age":{$gt:20},$or:[{"group":"A组"},{"group":"C组"}]})年龄要大于20并且必须是A组或者C组的人。如果数据中确实对应的字段会被直接过滤掉
image.png
指定返回查询内容:
db.getCollection('protest').find({"age":{$gt:20},$or:[{"group":"A组"},{"group":"C组"}]},{name:1,by:1,sex:1,by:1}) db.getCollection('protest').find({"age":{$gt:20},$or:[{"group":"A组"},{"group":"C组"}]},{name:1,sex:1,by:1}) db.getCollection('protest').find({"name":"邵志奇"},{"deptIds":1})//查看部门_id 键默认返回,需要主动指定 _id:0 才会隐藏
image.png
In:
db.getCollection('protest').find({"age":{$in:[20,19,24]}}) db.getCollection('protest').find({"age":{"$in":[20,19,24]}})返回满足条件一条记录数
db.getCollection('protest').find({}).limit(1)跳过前四条满足条件的数据,所以就会直接找到第五条
db.getCollection('protest').find({}).skip(4)ongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列语法示例:按照age由大到小排序
db.getCollection('protest').find({}).sort({"age":-1}) image.png多字段排序:按照age降序,_id升序
db.getCollection('protest').find({}).sort({"age":-1,"_id":1})注:skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。
索引语法:db.COLLECTION_NAME.ensureIndex({KEY:1})Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可示例:
db.getCollection('protest').ensureIndex({"name":1})复合索引:
db.getCollection('protest').ensureIndex({"name":1,"age":1})其他参数:
image.png
示例:
db.getCollection('protest').ensureIndex({open: 1, close: 1}, {background: true})http://www.runoob.com/mongodb/mongodb-aggregate.html
// 需要更新那个数据,前面的大括号是条件,后面是要清空原有这条记录的所有字段(不包括_id)后要新存入的字段//in语句
db.getCollection('dept').find({"_id":{$in:["33cce2d200da4626bbbbf5513594120c","6253ed4309e64a42b37005ebfb8edced"]}}) db.getCollection('label').remove({"canDelete":1}) db.getCollection('label').remove({"companyId":{$exists:true}}) db.label.save([{ "_id" : "1", "chnName" : "部门", "createTime" : NumberLong("1521705391609"), "updateTime" : NumberLong("1521705391609"), "showState" : NumberInt(1), "canDelete" : NumberInt(0), "canModify" : NumberInt(0) }, { "_id" : "2", "chnName" : "邮箱", "createTime" : NumberLong("1521705391610"), "updateTime" : NumberLong("1521705391610"), "showState" : NumberInt(1), "canDelete" : NumberInt(0), "canModify" : NumberInt(0) }] )//这里save也可用insert替换,貌似insert是_id数据库原有值时用
orgId:a7e7e48cab1c4ee385e1cc78ad4fb009passportId:312953f38a1b4a00a2c35f9050534f79
Query query=new Query(Criteria.where("companyId").is(companyId).and("groupId").ne(null).ne("").exists(true)); query.with(new Sort(Sort.Direction.DESC, "sort")); return find(query); db.getCollection('book_attr_templ').find({"org_id":"a7e7e48cab1c4ee385e1cc78ad4fb009","ekey":{$nin:["uo_name","uo_position","uo_phone","uo_email"]}})
转载于:https://www.cnblogs.com/shaozhiqi/p/11535098.html
相关资源:MONGODB基本操作封装类