上午,
似乎有一个脑力!环顾四周,看不到任何其他人有同样的问题,所以我要么完全错过了某些东西(最有可能),要么没有其他人有这个用例。
我基本上想要返回存储在mongodb集合中的所有对象,包括它们的id,但是作为字符串表示而不是完整对象。所以这个:
public ArrayList findAllObjects(){
return db.getCollection("objects").find().into(new ArrayList<Document>());
}
{
_id: {
class: "org.bson.types.ObjectId",
counter: 7230903,
date: "2016-10-03T12:39:38Z",
machineIdentifier: 5652488,
processIdentifier: 8859,
time: 1475498378000,
timeSecond: 1475498378,
timestamp: 1475498378
},
name: "Test Object"
},
现在,如果我在mongo控制台上运行查找,我会得到以下内容:
{
"_id": ObjectId("57f2518a564008229b6e55b7"),
"name": "Test Object"
}
这是57f2518a564008229b6e55b7,我想在原始的json中返回_id(可能在另一个名称下添加)字段。
我只需在单个文档上运行get getObjectId()即可在java代码中获取该字符串表示。所以我可以循环遍历每个结果并设置/添加_id,但这对我来说有点气味。
欢迎任何建议。
由于
更新
感谢Sinclair的评论,我不相信这是重复的,因为我确实想要包含id不一定排除任何东西。如果字符串表示形式在org.bson.types.ObjectId对象中作为属性,那么我可以将其余部分排除在外,但事实并非如此。
答案 0 :(得分:0)
您可以简单地使用toString()方法将对象转换为字符串:
List<Document> documents = collection.find().into(new ArrayList<>());
documents.parallelStream().forEach(document -> {
document.put("_id", document.get("_id").toString());
});