1

我是 Mongo 的新手,希望得到一些帮助!

我有一个父引用树结构,如下所示:

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

我想要一个查询,它返回所有对象,其最高父级在允许列表中具有此用户 ID。最顶层的父级是其父级为 null 的父级,并且最顶层的父级也应作为查询的一部分返回。

通常,一棵树将有 1-10 个级别,但可能更多。我应该担心性能吗?

4

1 回答 1

1

我想通了,谁需要这个。您基本上必须执行两个查询:

    // 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 回答