簡體   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