![](/img/trans.png)
[英]Getting only values instead of keys and values in JSON response in spring boot
[英]Spring MongoDB getting only values instead of key:value in result
您好,所以我试图从 mongoDB 获取 ID 列表,编写此代码返回 id:value 的 map 我只是希望它只返回值。
query=new Query(Criteria.where("_id").is("47b3b1ab-2d80-42cf-b289-e3d45497b59f"));
query.fields().include("recordList.id").exclude("_id");
System.out.println( mongoTemplate.findOne(query, Map.class,"Company3"));
{recordList=[{id=rec4vCGPy3EnXRuCM}, {id=recAivYlqtDzZP62C}, {id=recbcLfxuLLB6Jjn0}, {id=reckIA8RdQtDUKCYI}, {id=rectnZZzBJ2iKN8eO}]}
但我需要这样的东西
[rec4vCGPy3EnXRuCM, recAivYlqtDzZP62C, recbcLfxuLLB6Jjn0, reckIA8RdQtDUKCYI, rectnZZzBJ2iKN8eO]
是的,我知道我可以像这样操纵结果以获得所需的结果,但我想知道是否有可能直接从数据库获得相同的结果,而不是像这样
List<Map<String,String>> list = (List<Map<String, String>>) mongoTemplate.findOne(query, Map.class,"Company3").get("recordList");
List<String> idList=new ArrayList<>();
for (Map<String, String> stringStringMap : list) {
idList.add(stringStringMap.get("id"));
}
这是我的数据看起来像mongodb 文档。 抱歉插入图片,如果不可读就无法复制。
您不能使用 Mongodb 来做到这一点。 该数据库是面向文档的,这意味着给定一个标准(在本例中为一个 id),您将获得一个满足标准的文档列表,其中每个文档都有一些属性和一些值。
为了使它更容易,您可以重写您的代码,以便您可以 map 将您的结果转换为仅包含您想要的 id 列表而没有密钥的 pojo。
这将类似于以下内容:
public class Result {
private List<String> ids;
// getters and setters here
@override
public String toString(){
return ids.toString();
}
}
现在,您检索数据的存储库方法将如下所示:
query = new Query(Criteria.where("_id").is("47b3b1ab-2d80-42cf-b289-e3d45497b59f"));
// 不需要这个 //query.fields().include("recordList.id").exclude("_id");
System.out.println(mongoTemplate.findOne(查询,Result.class,"Company3"));
也许不同的可能会有所帮助。 https://docs.mongodb.com/manual/reference/method/db.collection.distinct/
也许你可以尝试这样的事情?
List<Map<String,String>> list = (List<Map<String, String>>) mongoTemplate.findOne(query, Map.class,"Company3").get("recordList");
List<String> idList=(List<Map<String, String>>) mongoTemplate.distinct("id",query,options);
oblivion02 的解决方案有点错误,但绝对暗示了我正确的方向,谢谢。
Query query=new Query(Criteria.where("_id").is("adfe377d-6e5b-48f0-b5bb-12b09f57285d"));
System.out.println(mongoTemplate.findDistinct(query,"recordList.id","Company4",String.class));
这两行给了我一个很好的干净列表,只有 id 值
[rec4vCGPy3EnXRuCM, recAivYlqtDzZP62C, recbcLfxuLLB6Jjn0, reckIA8RdQtDUKCYI]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.