1

私はMongoを初めて使用しているので、助けていただければ幸いです。

次のような親参照ツリー構造があります。

Object {
    _id: <some id>
    parent: <an _id or null if topmost>
    allowed : [userIds]
}

最上位の親がこのユーザー ID を許可リストに持つすべてのオブジェクトを返すクエリが必要です。最上位の親は、親が null である親であり、最上位の親もクエリの一部として返される必要があります。

通常、ツリーには 1 ~ 10 のレベルがありますが、それ以上になることもあります。パフォーマンスについて心配する必要がありますか?

4

1 に答える 1

1

これが必要な人のために、私はそれを理解しました。基本的に次の 2 つのクエリを実行する必要があります。

    // 1 - GET THE ANCESTORS
    var allowedAncestorIds = [];
    Objects.find({
        parent: null,
        allowed: this.userId
    }).forEach(function (ancestor) {
        // 2 - STORE THEIR IDs
        allowedAncestorIds.push(ancestor._id);
    });

    return Objects.find({
        $or: [
            // 3 - USE THE ALLOWED ANCESTOR IDs IN THE QUERY TO GET ALL THE OBJECTS
            {parent: {$in: allowedAncestorIds}},
            {allowed: this.userId}
        ]
    });
于 2013-07-08T22:29:29.783 に答える