Получить все связанные дочерние элементы - PullRequest
0 голосов
/ 04 июня 2019

У меня много много записей в дБ, ниже 5 записей, например

/* 1 */
{
  "_id": 25268,
  "name": "Gạo",
  "parentid": -1
}
/* 2 */
{
  "_id": 25290,
  "name": "Japonica: Dẻo và mềm cơm",
  "parentid": 25268
}
/* 3 */
{
  "_id": 25291,
  "name": "Japonica: Dẻo và mềm cơm 1",
  "parentid": 25290
}
/* 4 */
{
  "_id": 25292,
  "name": "Japonica: Dẻo và mềm cơm 2",
  "parentid": 25290
}
/* 5 */
{
  "_id": 25293,
  "name": "Japonica: Dẻo và mềm cơm 3",
  "parentid": 25292
}

1 является родителем 2, 2 является родителем 3 и 4, 4 является родителем 5. Как получить весь элемент, как указано выше (5 элементов), но просто знать _id из 1 (25268)?

1 Ответ

0 голосов
/ 04 июня 2019

Используя данный startId, он получит все свои родительские документы без запроса find ({}),

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

var startId = 25268;

function getParent(dbo, parent) {
    parent.forEach(element => {
        console.log(element);
       dbo.collection("hello").find({parentid: element._id}) .toArray(function(err, result) {
           if (err) throw err;
           getParent(dbo, result);
       })
    });
}
MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("hello").find({parentid: startId}).toArray(function(err, result) {
    if (err) throw err;
    getParent(dbo, result);
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...