溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

發(fā)布時(shí)間:2021-09-29 11:33:28 來(lái)源:億速云 閱讀:141 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了SpringBoot中對(duì)MongoDB的基本操作是怎樣的,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

SpringBoot 中對(duì) MongoDB的基本操作

Database 庫(kù)的創(chuàng)建

首先 在MongoDB 操作客戶端 Robo 3T 中 創(chuàng)建數(shù)據(jù)庫(kù):

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

增加用戶User:

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

創(chuàng)建 Collections 集合(類似mysql 中的 表):

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

后面我們大部分都是基于創(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>
SpringBoot 中 application.properties 文件配置
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
MongoDB 中的 增刪改查 操作

定義 MongoTemplate

	 @Autowired
	private MongoTemplate mongoTemplate;

	private static String COLLECTION_DEMO = "collectiondemo";

基于 mongoTemplate 操作

添加數(shù)據(jù)
   @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ù):

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

在 Robo 中 可以查詢到:

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

添加數(shù)據(jù)成功 ,其中 ObjectId是一個(gè)12字節(jié)的 BSON 類型字符串, 由

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

組成

插入數(shù)據(jù)
	@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ù):

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

可以看到:

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

但有個(gè)問(wèn)題,當(dāng)參數(shù)中 key 在 mongodb 不存在時(shí),會(huì)自己創(chuàng)建:

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

之前mongodb并沒(méi)有 age 字段,現(xiàn)在可以看到:

SpringBoot中對(duì)MongoDB的基本操作是怎樣的

這可能對(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();
	}
查詢數(shù)據(jù)
	@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;
	}
刪除數(shù)據(jù)
  @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è)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI