2015-10-06 135 views
1

我正在使用Spring-Data-Mongo來訪問我的mongo數據庫上的CRUD操作。我執行下面線如何使用SPRING數據在MongoDB中創建一個集合

DB分貝= mongoTemplate.getDb()

當上午在調試模式下,我可以看到db._collections屬性具有4個值(集合,我已插入)。但是,當我查詢

db.getCollectionNames() 

我得到零收藏回來。這是爲什麼?同樣也是如此,當我做

db.getCollection("collectionName") 

但我知道這樣做存在,因爲當我做這樣的事情

mongoTemplate.createCollection("collectionName"); 

我得到一個異常說,收集已經存在的集合。任何人都可以請解釋我可能會丟失什麼

回答

1

MongoTemplate提供了一些管理集合的方法。下面的例子演示了一些方法:

DBCollection collection = null; 
if (!mongoTemplate.getCollectionNames().contains("collectionName")) { 
    collection = mongoTemplate.createCollection("collectionName"); 
} 

mongoTemplate.dropCollection("collectionName"); 

在上面,getCollectionNames()返回一組集合名稱和dropCollection()下降的集合。

+0

這與已經做過的事情有何不同?我已經提到mongoTemplate.getCollectionNames()的結果爲零集合 –

+0

這是不同的,因爲您正在使用'db db = mongoTemplate.getDb()'的'db'對象來獲取集合名稱'db.getCollectionNames()'而不是'mongoTemplate'對象。 – chridam

+0

我累了,沒有運氣。 ,mongotemplate.dropCollection(「collectionName」)似乎可以工作。當我期望它返回true時,mongoTemplate.collectionExists(「collectionName」)也返回false –

0

使用com.mongodb.client和com.mongodb包的MongoClient,MongoDatabase和MongoIterable。

MongoClient client = MongoClient(<host>, port); 
MongoDatabase db = client.getDatabase(<Name of the database>); 
MongoIterable<String> = db.listCollectionNames(); 

現在您可以遍歷所有集合的名稱。

此外,你甚至可以使用MongoCollection類從指定的集合中獲取文檔。如果不存在getCollection()將創建集合。

MongoCollection<Document> collection = db.getCollection(<Collection name>); 
相關問題