我已经开始使用mongo db并提出了一个问题。 比如,我有一个带有id字段的对象(POJO)(比如名为'ID'),我希望在JSON中表示并在Mongo DB中存储/加载。 据我所知,任何对象总是有_id字段(带下划线,小写)。 我想要做的是:在查询期间,我希望mongo db使用字段ID而不是_id返回我的JSON。 在SQL中我会使用像
这样的东西 SELECT _id as ID ...
我的问题是它是否可以在mongo db中执行此操作,如果是,基于Java的示例将非常感激:)
我理解可以迭代记录并手动用ID替换_id,但我不想要这个O(n)循环。 我也不想复制这些行并存储“id”和“_id” 所以我正在寻找查询级别或Java驱动程序的解决方案。
提前致谢并度过愉快的一天
答案 0 :(得分:0)
Mongodb不使用SQL,更像是对象查询语言和集合。
你可以尝试的是,有些东西类似于使用Mongo Java Driver的下面的代码
Pojo obj = new PojoInstance();
obj.setId(id);
db.yourdb.find(obj);
答案 1 :(得分:0)
我最终在Java Driver中使用了以下方法:
DBCursor cursor = runSomeQuery();
try {
while(cursor.hasNext()) {
DBObject dbObject = cursor.next();
ObjectId id = (ObjectId) dbObject.get("_id");
dbObject.removeField("_id");
dbObject.put("ID", id.toString());
System.out.println(dbObject);
}
} finally {
cursor.close();
}
我想知道这是最好的解决方案还是我有其他更好的选择 标记
答案 2 :(得分:0)
这是我在Javascript中所做的一个例子。它可能对您有所帮助。在我的情况下,我将删除_id字段并使两个非常嵌套的字段别名以显示更简单的名称。
db.players.aggregate([
{ $match: { accountId: '12345'}},
{ $project: {
"_id": 0,
"id": "$id",
"masterVersion": "$branches.master.configuration.player.template.version",
"previewVersion": "$branches.preview.configuration.player.template.version"
}
}
])
我希望你觉得这很有用。