Я использовал следующий код для получения набора данных, и он работал нормально, без ошибок.
const postslist = await postSchemaModel.find()
.limit(limit)
.skip(startIndex)
.sort({ createdAt: -1 })
.populate(user_id)
.populate("user_id", "img user_name _id");
Но, в моем случае я хочу получить набор результатов с $ geonear , и я использовал следующий код. Вот эта ошибка * Нераспознанное имя этапа конвейера: '$ populate' * Но функция заполнения отлично работала с приведенным выше кодом. Ниже приведен новый код, который выдает ошибку. В чем тут может быть вина?
postSchemaModel.aggregate([{
"$geoNear": {
"near": { "type": "Point", "coordinates": [6.7336665, 79.8994071], "Typology": "post" },
"distanceField": "dist.calculated",
"maxDistance": 5000,
"includeLocs": "dist.location",
"spherical": true
}
},
{ "limit": limit },
{ "skip": startIndex },
{ "$sort": { "createdAt": -1 } },
{ "populate": user_id },
{ "populate": "'user_id', 'img user_name _id'" }
]).then(async function(posts) {
//some code here
});