mongodb - Mongodb在同一个集合中获取给定父母的所有子文档
问题描述
我是 MongoDB 的新手。我试图让所有在一位经理下工作的用户。以下是我的收藏:
[{
"_id": {
"$oid": "6103b24ceb3d6900012eab2b"
},
"Name": "Name1",
"ManagerUserId": ""
}, {
"_id": {
"$oid": "611a13c10a69160001a3f45b"
},
"Name": "Name1.1",
"ManagerUserId": "6103b24ceb3d6900012eab2b"
}, {
"_id": {
"$oid": "611cb99de9aeb900011a27bf"
},
"Name": "Name1.2",
"ManagerUserId": "6103b24ceb3d6900012eab2b"
}, {
"_id": {
"$oid": "611f4d9ba769510001678fa0"
},
"Name": "Name1.1.1",
"ManagerUserId": "611a13c10a69160001a3f45b"
}, {
"_id": {
"$oid": "611f4de5a769510001678fa2"
},
"Name": "Name1.1.2",
"ManagerUserId": "611a13c10a69160001a3f45b"
}, {
"_id": {
"$oid": "611f5739a769510001678fad"
},
"Name": "Name1.2.1",
"ManagerUserId": "611cb99de9aeb900011a27bf"
}, {
"_id": {
"$oid": "611f5779a769510001678faf"
},
"Name": "Name1.2.2",
"ManagerUserId": "611cb99de9aeb900011a27bf"
}, {
"_id": {
"$oid": "611f589aa769510001678fb3"
},
"Name": "Name1.1.1.1",
"ManagerUserId": "611f4d9ba769510001678fa0"
}, {
"_id": {
"$oid": "611f58f8a769510001678fb5"
},
"Name": "Name1.1.1.2",
"ManagerUserId": "611f4d9ba769510001678fa0"
}, {
"_id": {
"$oid": "611f5932a769510001678fb7"
},
"Name": "Name1.1.1.3",
"ManagerUserId": "611f4d9ba769510001678fa0"
}, {
"_id": {
"$oid": "611f5976a769510001678fb9"
},
"Name": "Name1.1.1.4",
"ManagerUserId": "611f4d9ba769510001678fa0"
}]
有N级层次结构。我尝试使用 Neil Lunn 的graphLookup和SO Answer 进行mongo 聚合操作
[{$match: {
"Name": "Name1.1"
}}, {$addFields: {
"ManagerUserId": { "$toObjectId": "$ManagerUserId" }
}}, {$graphLookup: {
from: "User",
startWith: "$ManagerUserId",
connectFromField: "ManagerUserId",
connectToField: "_id",
as: "reportingHierarchy",
maxDepth:4
}}]
但这导致每个报告层次结构中的所有孩子。
我需要以下输出:
[
{
"_id": {
"$oid": "611f4d9ba769510001678fa0"
},
"Name": "Name1.1.1",
"ManagerUserId": "611a13c10a69160001a3f45b"
},
{
"_id": {
"$oid": "611f4de5a769510001678fa2"
},
"Name": "Name1.1.2",
"ManagerUserId": "611a13c10a69160001a3f45b"
},
{
"_id": {
"$oid": "611f589aa769510001678fb3"
},
"Name": "Name1.1.1.1",
"ManagerUserId": "611f4d9ba769510001678fa0"
},
{
"_id": {
"$oid": "611f58f8a769510001678fb5"
},
"Name": "Name1.1.1.2",
"ManagerUserId": "611f4d9ba769510001678fa0"
},
{
"_id": {
"$oid": "611f5932a769510001678fb7"
},
"Name": "Name1.1.1.3",
"ManagerUserId": "611f4d9ba769510001678fa0"
},
{
"_id": {
"$oid": "611f5976a769510001678fb9"
},
"Name": "Name1.1.1.4",
"ManagerUserId": "611f4d9ba769510001678fa0"
}]
在这个SO 问题中,它被要求得到祖先,但我正在寻找孩子。请帮助我通过 mongodb 查询来实现这一点
Relation _id PK 类型 ObjcetId ManagerUserId FK(_id) 类型字符串
解决方案
推荐阅读
- php - WordPress 特色图片不会显示
- google-sheets - 有没有办法有条件地格式化数据验证条目以更改单元格本身的值?
- python - 我似乎无法在我的 main 中正确调用我的方法
- http - 如何阻止某些 HTTP 标头字段?
- solr - Solr.log 文件未使用最新信息进行更新
- sql - 使用 MERGE 语句时语法不正确
- python - FizzBuzz 还打印包含 3 和 5 的数字
- perl - 使用 DateTime 在 Perl 中显示 12 小时制时间
- r - 根据 Shiny R 中的单选按钮选择过滤列
- html - 如何传递图像下的文本,其中两列在引导程序上定义为图像,另一列用于文本?