У меня есть массив идентификаторов, и я хочу найти вложенную опору в mongodb, чтобы узнать, существует ли какой-либо из этих идентификаторов.
База данных выглядит так. alertDetails - это массив, и он содержит объекты, у этих объектов есть поле идентификатора, и я хочу проверить все эти идентификаторы по моему массиву идентификаторов
{
status: string,
openDate: date,
alertType: [],
severity: [],
locationName: [],
alertDetails: [
{_id:5f0b4f508bda3805754ab343,
}
],
Этот код ниже не работает. Возвращает пустой массив
let ids = [
'5f0b4f508bda3805754ab343',
'5f0b4f508bda3805754ab33f',
'5f0b4f4f8bda3805754ab33b',
'5f0b4f4f8bda3805754ab336',
'5cdd5f00d5233209d7800c27',
'5cdd568ed5233209d77fe464',
'5cdd32d7d5233209d77f4bf8',
'5cd58793d5233209d75f9d00',
];
G2Alerts.find({ 'alertsDetails._id': { $in: ids } }, (err, user) => {
console.log(err, user);
});
Этот код работает, но это не то, что я хочу, я хочу вернуть только массив, содержащий совпадения, если таковые имеются.
G2Alerts.aggregate([
{
$project: {
exists: {
$in: [ids, '$alertDetails._id'],
},
},
},
]).exec((err, alert) => {
if (err) {
res.send(err);
}
res.send(alert);
});