У меня есть одна коллекция, известная как Skills
:
Skills:
{
"_id":ObjectId("5cebbfbe09ce114302cd6028"),
"name":"Java",
"level":1.0,
"status":"Approved",
"parentId":"",
"createDate": ISODate("2019-05-27T10:45:18.904 Z"),
"modifiedDate": ISODate("2019-05-27T10:45:18.904 Z"),
"createdBy":"Admin",
"modifiedBy":"Admin"
}/* 2 */{
"_id":ObjectId("5cebbfbe09ce114302cd6029"),
"name":"Springs",
"level":1.0,
"status":"Approved",
"parentId":ObjectId("5cebbfbe09ce114302cd6028"),
"createDate": ISODate("2019-05-27T10:45:18.904 Z"),
"modifiedDate": ISODate("2019-05-27T10:45:18.904 Z"),
"createdBy":"Admin",
"modifiedBy":"Admin"
}/* 3 */{
"_id":ObjectId("5cebbfbe09ce114302cd602a"),
"name":"Struts",
"level":1.0,
"status":"Approved",
"parentId":ObjectId("5cebbfbe09ce114302cd6028"),
"createDate": ISODate("2019-05-27T10:45:18.904 Z"),
"modifiedDate": ISODate("2019-05-27T10:45:18.904 Z"),
"createdBy":"Admin",
"modifiedBy":"Admin"
}/* 4 */{
"_id":ObjectId("5cebc0538a5ce6ceea9ce8f1"),
"name":"MVC",
"level":1.0,
"status":"Approved",
"parentId":ObjectId("5cebbfbe09ce114302cd602a"),
"createDate": ISODate("2019-05-27T10:47:47.684 Z"),
"modifiedDate": ISODate("2019-05-27T10:47:47.684 Z"),
"createdBy":"Admin",
"modifiedBy":"Admin"
}
Java является родительским документом для Spring, а Struts и Struts являются родительским документом для MVC.Я хочу получить 3 уровня иерархических данных из той же коллекции.Или, если у вас есть какие-либо предложения по разработке схемы, пожалуйста, поделитесь ими.Я попробовал это с использованием структуры агрегации, но не получил ожидаемого результата.Я использовал $lookup
stage.
db.skills.aggregate([
{
$project:{
name:1,
level:1,
status:1
}
},
{
$lookup:{
from:"skills",
localField:"_id",
foreignField:"parentId",
as:"Data"
}
}
])
Я хочу вывод таким образом:
"_id":ObjectId("5cebbfbe09ce114302cd6028"),
"name":"Java",
"level":1.0,
"status":"Approved",
Data:[
{
"_id":ObjectId("5cebbfbe09ce114302cd6029"),
"name":"Springs",
"level":1.0,
"status":"Approved"
},
{
"_id":ObjectId("5cebbfbe09ce114302cd602a"),
"name":"Struts",
"level":1.0,
"status":"Approved",
Data:[
{
"_id":ObjectId("5cebc0538a5ce6ceea9ce8f1"),
"name":"MVC",
"level":1.0,
"status":"Approved"
}
]``
}
]