要将mongo Collection复制到相关的Java对象中

时间:2018-10-31 08:08:38

标签: java mongodb

我有一个Java代码,需要经常引用mongo集合,这需要很多时间。我在堆中没有大对象没有任何问题。因此,基本上,我想将所有这些集合复制到相关对象中的java中,以便在搜索字段时可以参考它。

1)是否可以一次性遍历该集合中的所有文档到JsonArray / List中?

2)我可以像在进行查询一样在JSONArray上进行聚合搜索以找到相关文档,然后执行查找操作吗?

1 个答案:

答案 0 :(得分:0)

1)是否可以一次性遍历该集合中的所有文档到JsonArray / List中?

A: 如果要查找JavaDocumentName的所有文档(java中的任何集合名称)

List<JavaDocumentName> listRes = mongoOperation.findAll(JavaDocumentName.class);

2)我可以像在进行查询一样在JSONArray上进行聚合搜索以找到相关文档,然后执行查找操作吗?

Query searchQuery = new Query(Criteria.where("name").is("Parth"));
List<JavaDocumentName> listRes = mongoOperations.find(searchQuery, JavaDocumentName.class);

示例:

@Document(collection =“ Customer”) 公共类客户{

}

列表listRes = mongoOperation.findAll(Customer.class);

如果您想要JSON,则控制器方法将在最后为您生成JSON,如下所示,

@RequestMapping(value = "/customers", method = RequestMethod.GETG,
  produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
 public Customer getCustomer{

 }

============================

另一种方法

您可以使用CollectionCallback直接处理返回的DBObject,只需将其toString()即可:

template.execute("jvmInfo", new CollectionCallback<String>() {
  String doInCollection(DBCollection collection) {
    DBCursor cursor = collection.find(query)
   return cursor.next().toString()
 }
 } 
 String result = mongoTemplate.findOne(basicQuery, String.class, "jvmInfo");