10

内部に保存されているデータを公開する nodejs REST サービスで MongoDB を使用しています。$ref を使用するデータを調べる方法について質問があります。

Anther コレクション内の別のオブジェクト (詳細) への参照を含むオブジェクトのサンプルを次に示します。

{
    "_id" : ObjectId("5962c7b53b6a02100a000085"),
    "Title" : "test",
    "detail" : {
        "$ref" : "ObjDetail",
        "$id" : ObjectId("5270c7b11f6a02100a000001")
    },
    "foo" : bar
}

実際、Node.js と mongodb モジュールを使用して、次のことを行います。

db.collection("Obj").findOne({"_id" : new ObjectID("5962c7b53b6a02100a000085"},
function(err, item) {
    db.collection(item.$ref).findOne({"_id" : item.$id}, function(err,subItem){
        ...
    });
});

実際、2 つのクエリを作成し、2 つのオブジェクトを取得します。これは一種の「遅延読み込み」です (正確ではありませんが、ほぼ)。

私の質問は簡単です: 1 つのクエリでオブジェクト グラフ全体を取得することは可能ですか?

ありがとうございました

4

5 に答える 5

6

いいえ、できません。

DBRef を解決するには、アプリケーションで追加のクエリを実行して、参照されているドキュメントを返す必要があります。多くのドライバーには、DBRef のクエリを自動的に形成するヘルパー メソッドがあります。ドライバーは、DBRef をドキュメントに自動的に解決しません。

MongoDB ドキュメントhttp://docs.mongodb.org/manual/reference/database-references/から。

于 2013-10-30T09:40:54.583 に答える