您好,登錄后才能下訂單哦!
本篇文章為大家展示了SpringBoot中對(duì)MongoDB的基本操作是怎樣的,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
首先 在MongoDB 操作客戶端 Robo 3T 中 創(chuàng)建數(shù)據(jù)庫(kù):
增加用戶User:
創(chuàng)建 Collections 集合(類似mysql 中的 表):
后面我們大部分都是基于創(chuàng)建的Collection “collectiondemo”操作的。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version> 2.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version> 2.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <version> 2.1.7.RELEASE</version> </dependency> </dependencies>
spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=mongodemo spring.data.mongodb.username=login spring.data.mongodb.password=login
定義 MongoTemplate
@Autowired private MongoTemplate mongoTemplate; private static String COLLECTION_DEMO = "collectiondemo";
基于 mongoTemplate 操作
@PostMapping("/insertDocument") public void insertDocument(String document) { //獲取集合 MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO); Document parse = Document.parse(document); //插入文檔 collection.insertOne(parse); }
postman 測(cè)試參數(shù):
在 Robo 中 可以查詢到:
添加數(shù)據(jù)成功 ,其中 ObjectId是一個(gè)12字節(jié)的 BSON 類型字符串, 由
組成
@PutMapping("/updateDocument") public Long updateDocument(String queryDocument, String ducument) { MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO); BasicDBObject queryParse = BasicDBObject.parse(queryDocument); BasicDBObject parse = BasicDBObject.parse(ducument); UpdateResult result = collection.updateOne(queryParse, new BasicDBObject("$set",parse)); return result.getModifiedCount(); }
輸入?yún)?shù):
可以看到:
但有個(gè)問(wèn)題,當(dāng)參數(shù)中 key 在 mongodb 不存在時(shí),會(huì)自己創(chuàng)建:
之前mongodb并沒(méi)有 age 字段,現(xiàn)在可以看到:
這可能對(duì)有些業(yè)務(wù)場(chǎng)景,對(duì)key要求嚴(yán)格的 就無(wú)法通過(guò)這個(gè)滿足條件 ,此時(shí)mongodb 中 可以用$exists 解決:
@PutMapping("/updateDocumentOnlyHave") public Long updateDocumentOnlyHave(String id, String ducument) { MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO); BasicDBObject parse = BasicDBObject.parse(ducument); Set<String> keySet = parse.keySet(); BasicDBObject dbObject = new BasicDBObject(); dbObject.put("id",id); for (String key : keySet) { dbObject.put(key, new BasicDBObject("$exists",true)); } UpdateResult result = collection.updateOne(dbObject, new BasicDBObject("$set",parse)); return result.getModifiedCount(); }
@GetMapping("/listDocuments") public List<Document> findDocuments() { MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO); FindIterable<Document> documents = collection.find(); List<Document> listDocuments = new ArrayList<>(); for (Document document : documents) { listDocuments.add(document); } return listDocuments; }
@DeleteMapping("/deleteDocument") public DeleteResult deleteDocument(String name) { MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO); DeleteResult result = collection.deleteOne(new BasicDBObject("name", name)); return result; }
上述內(nèi)容就是SpringBoot中對(duì)MongoDB的基本操作是怎樣的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。