MongoDB在Java当中的稍复杂用法(内嵌Document或者Array的CRUD)
来源:互联网 发布:java数组排序从大到小 编辑:程序博客网 时间:2024/05/16 08:15
主要介绍三个内容,Document最外层的CRUD,内嵌Array数组的CRUD,内嵌Document的CRUD
参考网址:https://docs.mongodb.org/getting-started/java/
https://docs.mongodb.org/manual/reference/operator/projection/positional/
示例Document
exam
{ "_id" : ObjectId("54c955492b7c8eb21818bd09"), "addresses" : { "address1",
"address2" }, "borough" : "Manhattan", "grades" : [ { "date" : ISODate("2014-10-01T00:00:00Z"), "grade" : "A", "score" : 11 }, { "date" : ISODate("2014-01-16T00:00:00Z"), "grade" : "B", "score" : 17 } ]}
一.最外层基本CRUD
MongoCollection <Document> menuCollection = MongoUtils.getDB().getCollection( "exam");1.insert public void insertOne(Exam e) { if (e.getId () == null) { e. setId( new ObjectId()); } menuCollection.insertOne (MongoReflection .convertToDocument(menu));//自己定义的映射工具类 }2.find public Menu findById(ObjectId eId ) { Document doc = menuCollection. find( eq( "_id", eId)) .projection (exclude(" "grades" )) .first (); return MongoReflection.convertFromDocument (doc , Exam.class ); }3. delete public boolean deleteOne(ObjectId eId ) { Document filter = new Document( "_id", eId); return menuCollection.deleteOne (filter ).wasAcknowledged (); }4.update public boolean updateById(Exam e) { if (e .getId () == null) { return false; } Document doc = MongoReflection.convertWithoutNull (menu ); return menuCollection. updateOne( new Document( "_id", e.getId()), new Document( "$set", doc)).wasAcknowledged(); }5.find List public List <Restaurant > findByGroup(ObjectId groupId ) { FindIterable <Document > doc = restCollection .find (eq("groupId", groupId )).projection ( exclude( "thumb", "comment")); final List <Exam> list = new ArrayList<Exam >(); if (doc == null) { return list; } doc. forEach( new Block< Document>() { @Override public void apply( final Document document) { Exam r = MongoReflection.convertFromDocument (document , Exam. class); list. add( r); } }); return list; }
二.内嵌数组Array的CRUD操作
内嵌Array的操作参考网址:https://docs.mongodb.org/manual/reference/operator/update/positional/#up._S_1.insertJava语法: public boolean insertOneThumb(ObjectId restId , String memberId) { return restCollection. updateOne( eq( "_id", restId), new Document( "$addToSet", new Document( "thumb", memberId))) .wasAcknowledged (); }MongoDB 语法:db.exam.update({"_id":ObjectId("54c955492b7c8eb21818bd09")},{"$addToSet":{"addresses":"address3"}}) Java语法:2.单个更新update操作MongoDB 语法:db.exam.update({"_id":ObjectId("54c955492b7c8eb21818bd09"),"addresses":"address1"},{"$set":{"addresses":"addressChange"}})
Java语法: restCollection. updateOne( and( eq( "_id",new ObjectId("54c955492b7c8eb21818bd09" )),eq("addresses", "address1")), new Document("addresses" ,"addressChange" ));3.删除操作delete MongoDB语法:db.exam.update({"_id":ObjectId("54c955492b7c8eb21818bd09")},{"$pull":{"addresses":"address1"}}) Java语法: restCollection. updateOne( eq( "_id",new ObjectId("54c955492b7c8eb21818bd09" )),new Document("$pull", new Document("addresses" ,"address1" )));4.查找操作 MongoDB语法:db.exam.find({"addresses":{"$all":["address1"]}}) Java语法:restCollection.find (all("addresses", Arrays.asList("address1"))) .projection (exclude("grades")).first ();参考网址:https://docs.mongodb.org/manual/reference/operator/query/all/#op._S_all
三.内嵌Document的CRUD操作
参考网址: https://docs.mongodb.org/manual/reference/operator/update/push/#up._S_push1.inset one document Java 代码: menuCollection.updateOne (eq("_id), new ObjectId("54c955492b7c8eb21818bd09")), new Document( "$push", new Document("grades" , document))) .wasAcknowledged () MongoDB代码:db.menu.find({"_id":ObjectId("54c955492b7c8eb21818bd09")},{"$push":{里面是document的内容}})2.delete one document form Array Java代码: menuCollection.updateOne( new Document ("_id","54c955492b7c8eb21818bd09"), new Document( "$pull", new Document("grades" , new Document( "grade", "A")))) .wasAcknowledged (); mongoDB代码:db.menu.update({"_id":ObjectId("54c955492b7c8eb21818bd09") },{"$pull":{"grades":{"grade":"A"}}})3.update Document from array Java代码: menuCollection.updateOne ( new Document( "grades.grade", "A"), new Document( "$set", new Document("grades.$.score" , 18) ); mongoDB代码:db.menu.update({"grades.grade":"A"},{"$set":{"grades.$.score":18}})4.select Document from array Java代码:menuCollection .find (eq("grades.grade", "A")) .projection (new Document( "grades.$", 1)).first () MongoDB代码;db.menu.find({"grades.grade":"A"},{"grades.$":1}) //只显示 5.select list Java 代码: menuCollection.find(eq("_id" , new objectId(<span style="font-size:14px;"><span style="white-space: normal;">"54c955492b7c8eb21818bd09"</span></span>)) .projection (new Document( "grades", 1)).first () MongoDB代码:db.menu.find({"_id":ObjectId("54c955492b7c8eb21818bd09")},{"grades":1})
0 0
- MongoDB在Java当中的稍复杂用法(内嵌Document或者Array的CRUD)
- MongoDB在Java当中的稍复杂用法(内嵌Document或者Array的CRUD)
- mongodb 更新array内的某个document的field值
- 复杂的社会当中
- Mongodb 的CRUD操作(Java API 3.0+)
- 小试MongoDB及Java的CRUD
- MongoDB试用及Java的CRUD
- 分享java操作mongodb的crud代码
- java代码对MongoDB的CRUD
- java当中内部类的使用
- mongodb的crud
- mongodb的CRUD操作
- Java当中的内部类和匿名内部类
- MongoDB java[CRUD](四)
- 01-mongoDB的安装CRUD
- mongodb的基本操作(crud)
- 复杂的Document/View程序
- 基于mongodb的java之增删改查(CRUD)
- instanceof 学习心得(1)-来自疯狂Java讲义一书
- 裁剪圆形图片的思路及Demo
- 测试用例编写
- 《小QQ 大帝国 马化腾传奇》熊江
- 字节流的方式复制文件中内容
- MongoDB在Java当中的稍复杂用法(内嵌Document或者Array的CRUD)
- 学习 《算法导论》第13章 红黑树 总结一
- 字符串匹配算法KMP
- 字符流的形式复制文件内容
- 字符流的形式复制文件中的内容
- 接口问题
- Xcode绘制文字及图片
- 1042. 字符统计(20)
- openssl for android使用