最近工做使用了mongodb數據庫,一開始使用spring 中的 MongoTemplate api 來查詢,發現很不直觀,比較費勁,就想可否直接調用shell 命令。網上查了下,完整的例子不多,有的例子多是版本不一樣不能使用。因而,參考網上資料,通過1小時的嘗試,得出可行方法,直接上代碼吧。
spring
@Autowired
MongoConverter mongoConverter;mongodb
@Test
public void mgTest(){
String a = "[ { \"$match\" : { \"content.userEvent\" : \"visited\"}} , { \"$group\" : { \"_id\" : \"$header.visit_bid\"}} , { \"$group\" : { \"_id\" : \"$_id.header.visit_bid\" , \"count\" : { \"$sum\" : 1}}}]";
JSONArray ja = JSON.parseArray(a);
List<Bson> bsonList = new ArrayList<>();
for(int i=0;i<ja.size();i++){
bsonList.add(BsonDocument.parse(ja.get(i).toString()));
}
List<MgCountComBO> resultList = new ArrayList<>();
mongoTemplate.getCollection("BEHAVIOR_LOG")
.aggregate(bsonList,Document.class).map((val)->{
MgCountComBO mgCountComBO = mongoConverter.read(MgCountComBO.class,val);
return mgCountComBO;
}).into(resultList);
System.out.println(JSON.toJSONString(resultList));
}
關鍵是 MongoConverter mongoConverter shell