2015-10-06 136 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>); 
相关问题