【发布时间】:2017-02-12 12:04:56
【问题描述】:
早上,
看来是脑残了!环顾四周,看不到其他人有同样的问题,所以我要么完全错过了某些东西(很可能),要么没有其他人有这个用例。
我基本上想返回存储在 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 的 cmets,但我不认为这是重复的,因为我确实想包含 id 不一定排除任何东西。如果字符串表示在 org.bson.types.ObjectId 对象中作为属性,那么我可能会排除其余部分,但事实并非如此。
【问题讨论】:
-
你能在 Java 中使用这种语法吗? db.mycollection.find({}, {"user_id": 1, "total": 1});