MongoDB – Как получить документ с количеством детей

У меня есть структура документа, подобная этой:

{ 
  _id:
  name:
  parent:
}

У меня есть документы, что у некоторых из них есть parentID (например, дерево). Я хочу получить один документ на основе идентификатора, а также количество дочерних элементов, которые есть у конкретного документа.

Например:

{ 
  _id:1
  name: 1
  parent:
}
{ 
  _id:2
  name: 2
  parent: 1
}
{ 
  _id:3
  name: 3
  parent: 1
}

Я хочу найти по id 1 и получить что-то вроде этого

{ 
  _id:1
  name: 1
  parent:
  childCount: 2
}

Это возможно?

С уважением

Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
2
0
672
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете сделать себя $lookup, чтобы дети считали

db.tp1.aggregate([
    {$lookup: {from:"tp1", localField : "_id", foreignField: "parent", as: "children"}},
    {$addFields:{children : {$size : "$children"}}}
])

результат

{ "_id" : 1, "name" : 1, "parent" : null, "children" : 2 }
{ "_id" : 2, "name" : 2, "parent" : 1, "children" : 0 }
{ "_id" : 3, "name" : 3, "parent" : 1, "children" : 0 }

Есть ли способ сделать это без оператора $lookup @saravana? Это работало как шарм в локальном орехе. Я использую DocumentDB в AWS, и, хотите верьте, хотите нет, но он не поддерживает эту функцию. docs.aws.amazon.com/documentdb/latest/developerguide/…

Leandro 11.03.2019 06:05

вы можете сделать $groupparent и $count детей

Saravana 12.03.2019 00:42

Другие вопросы по теме