Моя цель - объединить 2 коллекции, в одной из которых, а именно в пользовательской коллекции, у меня есть массив строкового типа objectid, который представляет фактические идентификаторы в другой коллекции, а именно коллекцию изображений. Я использую следующий код
await dbConn()
return User.aggregate([
{
$match:{_id: mongoose.Types.ObjectId(id)}
},
{
$unwind:'$imgIds'
},
{
$lookup:{
from:'images',
localField:'imgIds',
foreignField:'_id',
as:'imgObjs'
}
}
],(err,res)=>console.log(res))
}
, поэтому в коллекции пользователей есть совпадение одного элемента. затем деконструкция массива imgIds и попытка установить связь между ними с помощью lookup, тогда как localField - это строка, а _id - это ObjectId. В результате ImgOb js - пустой массив.
Есть мысли по этому поводу? Я использую версию Mon go 3.6.12
------------ РЕДАКТИРОВАТЬ --------------
Я обнаружил что-то очень странное в поведении моего сервера. Когда я делаю простой вызов findById, мой элемент изображения является массивом ObjectId. Но при использовании агрегата ObjecIds становятся String. У кого-нибудь есть идеи, что здесь?