Найти значение mongoDb из любого из вложенных массивов случайных ключей - PullRequest
0 голосов
/ 05 июля 2019

Это мой пример коллекции mongoDb (_id не являются реальными), это пример, но я часто могу иметь 20 вложенных массивов по doc ...:

[
   {
      _id:48648648648,
      attaquers:[
         {
            _id:11111111
         },
         {
            _id:3333333
         }
      ],
      defenders:[
         {
            _id:22222222
         },
         {
            _id:4444444
         }
      ]
   },
   {
      _id:48648648649,
      attaquers:[
         {
            _id:77777777
         },
         {
            _id:3333333
         }
      ],
      defenders:[
         {
            _id:22222222
         },
         {
            _id:4444444
         }
      ],
      rookies:[
         {
            _id:11111111
         }
      ]
   }
]

Мне нужен node.jsкод цикла, , который найдет и вернет любой документ, содержащий _id 11111111. , независимо от того, где он находится.

Обратите внимание, что ключи массивов все время меняются (дляНапример, массив rookies НЕ присутствует в первом документе).

На данный момент это мой код node.js:

 app.post('/getEquipeFromFb', function(req, res) {


        MongoClient.connect(url, (err, client) => {

            db.collection('equipes').find({ $or: [{"attaquers._id":11111111},{"defenders._id":11111111},,{"rookies._id":11111111}]} ).toArray(function(err, docs) {
                if (err) throw err; 
                res.send(docs);
            });
        });
    })

Моя проблема: я не хочу переписывать массивыключи каждый раз внутри моего запроса find (), потому что иногда нет массива ROOKIES, это может быть другое имя массива, понимаете, что я имею в виду?Мне нужны своего рода циклы над любым массивом или любые значения ключа, включая любой вложенный массив.

Уже существует более 30 имен различных массивов, переписывать их все очень неестественно и скучно!Мне нужно сделать цикл, но я не знаю, как это сделать.

Большое спасибо за вашу помощь!Я пробовал все это без удачи ($ where);

Справка по запросу MongoDB - запрос значений любого ключа в подобъекте

А такжепробовал это: Справка по запросу MongoDB - запрос значений любого ключа в подобъекте

Я думаю, что это может быть что-то вроде этого, но это не работает:

db.collection('equipes').find().forEach(function (x) {
    x.array.forEach(function (y) {
        if (y._id instanceof Array) {

            print(x);

        }
    })
    }).toArray(function (err, docs) {
    if (err) throw err;
    res.send(docs);
    });
    });



TypeError: db.collection(...).find(...).forEach(...).toArray is not a function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...