0

我已经开始摆弄 mongo db 并提出了一个问题。说,我有一个带有 id 字段(例如,名为“ID”)的对象(PO​​JO),我想用 JSON 表示并在 Mongo DB 中存储/加载/加载。据我了解,任何对象总是有 _id 字段(带下划线,小写)。我想做的是:在查询期间,我希望 mongo db 返回我的带有字段 ID 而不是 _id 的 JSON。在 SQL 中,我会使用类似的东西

SELECT _id as ID ...

我的问题是是否可以在 mongo db 中执行此操作,如果可以,基于 Java 的示例将不胜感激:)

我知道可以迭代记录并手动将 _id 替换为 ID,但我不想要这个 O(n) 循环。我也不想复制这些行并存储“id”和“_id”所以我正在寻找查询级别的解决方案,或者可能是Java驱动程序。

提前致谢,祝您有美好的一天

4

3 回答 3

0

我最终在 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();
    }

我想知道这是最好的解决方案还是我有其他更好的选择马克

于 2013-02-27T18:23:11.767 回答
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"
    }
  }
])

我希望你觉得这有帮助。

于 2015-01-14T23:18:31.987 回答
0

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

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

Pojo obj = new PojoInstance();
obj.setId(id);
db.yourdb.find(obj);
于 2013-02-27T07:43:28.493 回答