繁体   English   中英

mongo db中的别名

[英]alias in mongo db

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

SELECT _id as ID ...

我的问题是,是否有可能在mongo db中做到这一点,如果可以的话,基于Java的Example将会非常感激:)

我知道可以遍历记录并将_id手动替换为ID,但我不希望出现O(n)循环。 我也不想复制行并存储“ id”和“ _id”,所以我正在查询级别或Java Driver级别寻找解决方案。

预先感谢,祝你有美好的一天

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

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

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();
    }

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

这是我用Java编写的示例。 这可能对您有帮助。 在我的情况下,我要删除_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"
    }
  }
])

我希望你觉得这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM