MongoDB 3.X JAVA基本操作
对Collection的操作
1 import java.util.ArrayList; 2 import java.util.Iterator; 3 import java.util.List; 4 5 import org.bson.Document; 6 7 import com.mongodb.Block; 8 import com.mongodb.MongoClient; 9 import com.mongodb.MongoClientURI; 10 import com.mongodb.MongoCredential; 11 import com.mongodb.ServerAddress; 12 import com.mongodb.client.FindIterable; 13 import com.mongodb.client.MongoCollection; 14 import com.mongodb.client.MongoCursor; 15 import com.mongodb.client.MongoDatabase; 16 import com.mongodb.client.result.DeleteResult; 17 import com.mongodb.client.result.UpdateResult; 18 import com.mongodb.client.model.BulkWriteOptions; 19 import com.mongodb.client.model.DeleteOneModel; 20 import com.mongodb.client.model.Filters; 21 import com.mongodb.client.model.InsertOneModel; 22 import com.mongodb.client.model.Projections; 23 import com.mongodb.client.model.ReplaceOneModel; 24 import com.mongodb.client.model.Sorts; 25 import com.mongodb.client.model.UpdateOneModel; 26 import com.mongodb.client.model.WriteModel; 27 28 import static com.mongodb.client.model.Filters.gt; /***/ 29 import static com.mongodb.client.model.Filters.eq; 30 import static com.mongodb.client.model.Filters.and; 31 import static com.mongodb.client.model.Filters.lt; 32 33 34 public class MongoDBJDBC { 35 36 @SuppressWarnings("resource") 37 public static void main(String[] args) { 38 try { 39 /** 直接登录 */ 40 // To directly connect to a single MongoDB server. 41 // (this will not auto-discover the primary even if it's a member of a replica set) 42 /* 43 MongoClient mongoClient = new MongoClient("192.168.253.10", 27017); 44 MongoDatabase mongoDatabase = mongoClient.getDatabase("dsp"); 45 System.out.println("Connect to database successfully!"); 46 */ 47 48 /** 使用URI连接信息连接 */ 49 /* 50 MongoClientURI connectionString = new MongoClientURI("mongodb://192.168.253.10:27017,192.168.253.20:27018,192.168.253.30:27019"); 51 MongoClient mongoClient = new MongoClient(connectionString); 52 */ 53 54 /** Replica Set 认证登录 */ 55 // to connect to a replica set, with auto-discovery of the primary, supply a seed list of members 56 // 数据库URI(两个参数分别为:服务器地址、端口) 57 ServerAddress serverAddress = new ServerAddress("192.168.253.10", 27017); 58 List<ServerAddress> addressList = new ArrayList<ServerAddress>(); 59 addressList.add(serverAddress); 60 // 认证信息(三个参数分别为:用户名、数据库名称、密码) 61 MongoCredential credential = MongoCredential.createScramSha1Credential("dsp", "dsp", "shi".toCharArray()); 62 List<MongoCredential> credentialList = new ArrayList<MongoCredential>(); 63 credentialList.add(credential); 64 // 根据URI和认证信息获取数据库连接 65 MongoClient mongoClient = new MongoClient(addressList, credentialList); 66 67 /** 切换数据库 */ 68 MongoDatabase mongoDatabase = mongoClient.getDatabase("dsp"); 69 /** 切换到需要操作的集合 */ 70 MongoCollection collection = mongoDatabase.getCollection("col"); 71 72 /** 插入文档 */ 73 // 创建文档 org.bson.Document对象,参数为K:V格式 74 // 创建文档集合List<Document> 75 // 将文档集合插入数据库集合中collection.insertMany(List<Document>),插入单个文档可以用collection.insertOne(Document) 76 /* 77 List<Document> docList = new ArrayList<Document>(); 78 for (int idx = 0; idx < 10; ++idx) { 79 Document doc = new Document("title", "MongoDB" + idx). 80 append("desc", "数据库" + idx). 81 append("likes", 100 + idx * 10). 82 append("by", "dsp" + idx); 83 docList.add(doc); 84 } 85 collection.insertMany(docList); 86 */ 87 88 /** 更新文档 */ 89 /* 90 UpdateResult updateResult = collection.updateMany(and(gt("likes", 90), lt("likes", 110)), new Document("$set", new Document("likes", 30))); 91 updateResult.getMatchedCount(); 92 updateResult.getUpsertedId(); 93 updateResult.getModifiedCount(); 94 */ 95 96 /** 删除文档 */ 97 /* 98 DeleteResult deleteResult = collection.deleteMany(Filters.eq("likes", 30)); 99 System.out.println("本次删除 " + deleteResult.getDeletedCount() + " 条记录!"); 100 */ 101 102 /** 检索文档 */ 103 /* 104 FindIterable<Document> findIterable = collection.find(); 105 MongoCursor<Document> mongoCursor = findIterable.iterator(); 106 try { 107 while (mongoCursor.hasNext()) { 108 System.out.println(mongoCursor.next().toJson()); 109 } 110 } finally { 111 mongoCursor.close(); 112 } 113 */ 114 115 // 查询过滤器 116 /* 117 Document myDoc = (Document) collection.find(eq("likes", 10)).first(); 118 System.out.println(myDoc.toJson()); 119 */ 120 121 /** 使用范围查询获取一个较大的子集 */ 122 Block<Document> printBlock = new Block<Document>() { 123 @Override 124 public void apply(Document doc) { 125 System.out.println(doc.toJson()); 126 } 127 }; 128 // 过滤 likes > 10 129 // collection.find(gt("likes", 10)).forEach(printBlock); 130 // 过滤 10 <= likes <= 100 131 // collection.find(and(Filters.gte("likes", 10), Filters.lte("likes", 100))).forEach(printBlock); 132 133 /** 排序 */ 134 // collection.find(Filters.exists("likes")).sort(Sorts.descending("likes")).limit(2).forEach(printBlock); 135 136 /** Projection */ 137 // Document myDoc = (Document) collection.find().projection(Projections.excludeId()).first(); 138 // System.out.println(myDoc.toJson()); 139 140 /** ordered bulk writes */ 141 List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>(); 142 writes.add(new InsertOneModel<Document>(new Document("_id", 13))); 143 writes.add(new InsertOneModel<Document>(new Document("_id", 14))); 144 writes.add(new InsertOneModel<Document>(new Document("_id", 15))); 145 writes.add(new UpdateOneModel<Document>(new Document("_id", 10), new Document("$set", new Document("x", 101010)))); 146 writes.add(new DeleteOneModel<Document>(new Document("_id", 11))); 147 writes.add(new ReplaceOneModel<Document>(new Document("_id", 12), new Document("_id", 12).append("x", 121212))); 148 // bulkWrite默认BulkWriteOptions 149 // collection.bulkWrite(writes); 150 // collection.find().forEach(printBlock); 151 // 152 // collection.bulkWrite(writes, new BulkWriteOptions().ordered(false)); 153 // collection.find().forEach(printBlock); 154 155 /** drop集合 */ 156 // collection.drop(); 157 158 /** drop数据库 */ 159 // mongoDatabase.drop(); 160 } catch (Exception e) { 161 System.err.println(e.getClass().getName() + " : " + e.getMessage()); 162 } finally { 163 // 防止意外,关闭数据库连接 164 // mongoClient.close(); 165 } 166 } 167 168 }
参考:
https://github.com/mongodb/mongo-java-driver/blob/3.0.x/driver/src/examples/tour/QuickTour.java
http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
:)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2015-04-06 [转]大数据学习路线