Java mongo db中的别名

Java mongo db中的别名,java,mongodb,Java,Mongodb,我开始摆弄mongo db,并提出了一个问题。 比如说,我有一个对象(POJO)和一个id字段(比如,名为'id'),我想用JSON表示它,并在Mongo DB中存储/加载。 据我所知,任何对象总是有_id字段(带下划线,小写)。 我想做的是:在查询过程中,我希望mongo db用字段ID而不是_ID返回我的JSON。 在SQL中,我会使用 选择id作为id… 我的问题是,在mongo db中是否可以这样做,如果可以的话,我们将非常欣赏基于Java的示例:) 我知道可以对记录进行迭代并手动用id

我开始摆弄mongo db,并提出了一个问题。 比如说,我有一个对象(POJO)和一个id字段(比如,名为'id'),我想用JSON表示它,并在Mongo DB中存储/加载。 据我所知,任何对象总是有_id字段(带下划线,小写)。 我想做的是:在查询过程中,我希望mongo db用字段ID而不是_ID返回我的JSON。 在SQL中,我会使用

选择id作为id…

我的问题是,在mongo db中是否可以这样做,如果可以的话,我们将非常欣赏基于Java的示例:)

我知道可以对记录进行迭代并手动用id替换_id,但我不希望出现这种O(n)循环。 我也不想复制行并同时存储“id”和“\u id” 所以我在寻找查询级别的解决方案,或者Java驱动程序


提前感谢并祝您愉快

Mongodb不使用SQL,它更像是对象查询语言和集合

您可以尝试的是,使用MongoJava驱动程序,类似于下面的代码

Pojo obj = new PojoInstance();
obj.setId(id);
db.yourdb.find(obj);

我最终在Java驱动程序中使用了以下方法:

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();
    }
我想知道这是最好的解决方案还是我有其他更好的选择
Mark

下面是我在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"
    }
  }
])

我希望这对您有所帮助。

谢谢,我知道mongo不支持SQL,我只是说,如果我使用SQL和一些RDBMS服务器,我会执行上述选择。从建议的解决方案中,我无法理解mongo db到底是如何处理对象的(我想你是指Spring数据方法,如果我没有弄错的话,它们有一个明确的@Id注释),我正在使用mongo Java驱动程序解决方案。谢谢你的回答!