我是Mongo的新手并希望得到一些帮助!
我有一个Parent References树结构,如下所示:
Object {
_id: <some id>
parent: <an _id or null if topmost>
allowed : [userIds]
}
我想要一个查询,它返回最顶层父对象在允许列表中具有此用户ID的所有对象。最顶层的父项是父项为null的父项,最顶层的父项也应作为查询的一部分返回。
通常情况下,一棵树有1-10级但可能更多。我应该担心表现吗?
答案 0 :(得分: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}
]
});