写一个springboot框架适用的mongodb工具类且返回为map集合
时间: 2023-08-02 20:14:53 浏览: 130
将对象属性转化为map集合的工具类
好的,以下是一个基于Spring Boot框架的MongoDB工具类示例,返回结果为Map集合:
```java
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class MongoDbUtil {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 查询指定集合的所有文档
*
* @param collectionName 集合名
* @return Map集合
*/
public List<Map<String, Object>> findAll(String collectionName) {
List<Map<String, Object>> resultList = new ArrayList<>();
MongoCollection<Document> collection = mongoTemplate.getCollection(collectionName);
MongoCursor<Document> cursor = collection.find().iterator();
try {
while (cursor.hasNext()) {
Document doc = cursor.next();
Map<String, Object> map = new HashMap<>();
for (String key : doc.keySet()) {
Object value = doc.get(key);
if (value instanceof Document) {
map.putAll(getDocumentMap((Document) value, key));
} else {
map.put(key, value);
}
}
resultList.add(map);
}
} finally {
cursor.close();
}
return resultList;
}
/**
* 将嵌套的Document转换为Map
*
* @param doc 嵌套的Document
* @param prefix 前缀
* @return Map集合
*/
private Map<String, Object> getDocumentMap(Document doc, String prefix) {
Map<String, Object> map = new HashMap<>();
for (String key : doc.keySet()) {
Object value = doc.get(key);
if (value instanceof Document) {
map.putAll(getDocumentMap((Document) value, prefix + "." + key));
} else {
map.put(prefix + "." + key, value);
}
}
return map;
}
}
```
上述工具类中的findAll方法可以查询指定集合的所有文档,并将结果转换为Map集合返回。其中,getDocumentMap方法用于将嵌套的Document转换为Map,以便于后续处理。需要注意的是,这里使用了Spring Data MongoDB提供的MongoTemplate类进行操作。
阅读全文