Я хочу этот результат, вложенный с 3 дочерними уровнями. Board -> Columns -> Cards
.
{
"id": "5e717d6d6e7cbf226074c3fe",
"name": null,
"createdBy": "admin",
"createdDate": 1584495981290,
"updatedBy": "admin",
"updatedDate": 1584495981290,
"columns": [
{
"id": "5e72bfa6cc3ff9000ae93c92",
"name": null,
"createdBy": "admin",
"createdDate": 1584578470269,
"updatedBy": "admin",
"updatedDate": 1584578470269,
"idBoard": "5e717d6d6e7cbf226074c3fe",
"cards": [
{
"id": "5e72de720715f131878b4ed2",
"name": "esse é o card",
"createdBy": "admin",
"createdDate": 1584586354958,
"updatedBy": "admin",
"updatedDate": 1584586354958,
"idColumn": "5e72bfa6cc3ff9000ae93c92"
}
]
},
{
"id": "5e72bfefcc3ff9000ae93c95",
"name": "coluna criada com sucesso.",
"createdBy": "admin",
"createdDate": 1584578543201,
"updatedBy": "admin",
"updatedDate": 1584578543201,
"idBoard": "5e717d6d6e7cbf226074c3fe",
"cards": [
{
"id": "5e72de550715f131878b4ed0",
"name": "esse é o card",
"createdBy": "admin",
"createdDate": 1584586325485,
"updatedBy": "admin",
"updatedDate": 1584586325485,
"idColumn": "5e72bfefcc3ff9000ae93c95"
},
{
"id": "5e72de630715f131878b4ed1",
"name": "esse é o card2",
"createdBy": "admin",
"createdDate": 1584586339140,
"updatedBy": "admin",
"updatedDate": 1584586339140,
"idColumn": "5e72bfefcc3ff9000ae93c95"
}
]
}
]
}
Но карты повторяют 14 раз одинаковое значение в 2 столбцах выше, я не знаю почему.
Проблема с картами, получить доску , получите две колонки, но я не хочу повторять карточки.
Как решить эту проблему, избегайте повторения карточки для многих карточек, просто возьмите карточку с idColumn.
Агрегация запись с Пн go 4.2.
db.boards.aggregate([
{"$match": {"_id":ObjectId("5e717d6d6e7cbf226074c3fe")}} ,
{"$lookup": {
"from":"columns",
"let":{"id":"$id"},
"pipeline": [
{"$match":{"$expr": {"$eq": ["$IdBoard","$$id"]}}},
{"$lookup":{
"from":"cards",
"let":{"idx":"$cards._id"},
"pipeline":[
{"$match":{"$expr": {"$eq": ["$IdColumn","$$idx"]}}},
],
"as":"cards"
}}
],
"as":"columns"
}} ,{
"$unwind":"$columns"
}
]).pretty();
Обновление: образцы доски, колун, карт.
Доска
{"id": "5e717d6d6e7cbf226074c3fe","name": null, "createdBy": "admin","createdDate": 1584495981290, "updatedBy": "admin","updatedDate": 1584495981290}
Две колонки с idBoard 5e717d6d6e7cbf226074c3fe
{"id": "5e72bfa6cc3ff9000ae93c92","name": null,"createdBy": "admin","createdDate": 1584578470269,"updatedBy": "admin","updatedDate": 1584578470269,"idBoard": "5e717d6d6e7cbf226074c3fe"
{"id": "5e72bfefcc3ff9000ae93c95","name": "coluna criada com sucesso.","createdBy": "admin","createdDate": 1584578543201,"updatedBy": "admin","updatedDate": 1584578543201,"idBoard": "5e717d6d6e7cbf226074c3fe"}
Карта с idColumn
5e72bfa6cc3ff9000ae93c92
Две карты с idColumn
5e72bfefcc3ff9000ae93c95
{"id": "5e72de550715f131878b4ed0","name": "esse é o card","createdBy": "admin","createdDate": 1584586325485,"updatedBy": "admin","updatedDate": 1584586325485,"idColumn": "5e72bfefcc3ff9000ae93c95"},
{"id": "5e72de630715f131878b4ed1","name": "esse é o card","createdBy": "admin","createdDate": 1584586339140,"updatedBy": "admin","updatedDate": 1584586339140,"idColumn": "5e72bfefcc3ff9000ae93c95"}