如何使用SPRING数据在MongoDB中创建一个集合
问题描述:
我正在使用Spring-Data-Mongo来访问我的mongo数据库上的CRUD操作。我执行下面线如何使用SPRING数据在MongoDB中创建一个集合
DB分贝= mongoTemplate.getDb()
当上午在调试模式下,我可以看到db._collections属性具有4个值(集合,我已插入)。但是,当我查询
db.getCollectionNames()
我得到零收藏回来。这是为什么?同样也是如此,当我做
db.getCollection("collectionName")
但我知道这样做存在,因为当我做这样的事情
mongoTemplate.createCollection("collectionName");
我得到一个异常说,收集已经存在的集合。任何人都可以请解释我可能会丢失什么
答
MongoTemplate提供了一些管理集合的方法。下面的例子演示了一些方法:
DBCollection collection = null;
if (!mongoTemplate.getCollectionNames().contains("collectionName")) {
collection = mongoTemplate.createCollection("collectionName");
}
mongoTemplate.dropCollection("collectionName");
在上面,getCollectionNames()
返回一组集合名称和dropCollection()
下降的集合。
答
使用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>);
这与已经做过的事情有何不同?我已经提到mongoTemplate.getCollectionNames()的结果为零集合 –
这是不同的,因为您正在使用'db db = mongoTemplate.getDb()'的'db'对象来获取集合名称'db.getCollectionNames()'而不是'mongoTemplate'对象。 – chridam
我累了,没有运气。 ,mongotemplate.dropCollection(“collectionName”)似乎可以工作。当我期望它返回true时,mongoTemplate.collectionExists(“collectionName”)也返回false –