Это мой пример коллекции 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