gpt4 book ai didi

java - 使用MongoDB java驱动的一些问题

转载 作者:可可西里 更新时间:2023-11-01 10:32:38 26 4
gpt4 key购买 nike

我正在使用 Jersey 编写 RESTful 服务,数据存储在 Mongodb 数据库中。

我想从数据库中获取一个项目并将它的 JSON 格式返回给客户端。这是我的代码:

    try {
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("entities");

// Build search query
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("entity_name", entityName);

DBCursor cursor = coll.find(searchQuery);

try {
if (cursor.hasNext()) {
return cursor.next().toString();
} else {
return "Not found.";
}
} finally {
cursor.close();
mongoClient.close();
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
return "System error.";

但我得到的数据包含一个名为id的字段:

"_id":{
"$oid":"525c8a4df33fa1b05dab6e6c"
},

我想从结果中删除这个字段。怎么做?

第二个问题是:结果中的某些字段是日期。但结果是这样的:

"publish_date":{
"$date":"1970-01-15T16:48:14.400Z"
},

我希望它显示为:

"publish_date":1970-01-15

我在考虑使用一些像Jackson这样的第三方库来存储所有数据,然后返回一个Jackson对象给客户端(Jersey可以自动将Jackson对象转为正确的JSON格式数据)。但就我而言,字段数不固定。我无法创建实体类来表示结果的结构。

你们有什么好的解决方案吗?

谢谢!

最佳答案

对于问题的第一部分,您需要使用投影来隐藏结果中的某些字段。

DBCursor cursor = coll.find(searchQuery, new BasicDBObject("_id", 0));

对于问题的第二部分,MongoDB Java 驱动程序可以使用以下方法返回 Date 对象:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

document = cursor.next();
Date date = document.getDate("publish_date");
String dateStr = dateFormat.format(date);

如果你想把这个字符串放回结果文档中以便以 JSON 格式打印它,你可以这样做:

document.put("publish_date", dateStr);

否则,您只需构建一个具有新值的 BasicDBObject。

关于java - 使用MongoDB java驱动的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19626838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com