У меня есть такой «комментарий» модель:MongoDB - агрегатный внедренный идентификатор документа перезаписать внешний документ _id
{ _id: <comment-id>,
user: {
id: { type: Schema.ObjectId, ref: 'User', required: true },
name: String
},
sharedToUsers: [{ type: Schema.ObjectId, ref: 'User' }],
repliedToUsers: [{ type: Schema.ObjectId, ref: 'User' }],
}
И я хочу, чтобы запросить все комментарии, которые проходят следующие условия:
- sharedToUsers массив пуст
- repliedToUsers массив пуст
Но также, я ж ant результат должен содержать только 1 комментарий (последний комментарий) для пользователя по идентификатору пользователя.
Я попытался создать эту совокупность (Node.js, мангуст):
Comment.aggregate(
{ $match: { "sharedToUsers": [], "repliedToUsers": [] } },
{
$group: {
_id: "$user.id",
user: { $first: "$user" },
}
},
function (err, result) {
console.log(result);
if (!err) {
res.send(result);
} else {
res.status(500).send({err: err});
}
});
Это на самом деле работает, но серьезная проблема заключается в том, что результаты комментарии _id поле перезаписана вложенной пользователем _Я бы.
Как сохранить работоспособность агрегата, но не перезаписывать исходное поле _ID комментария?
Thanks
Нажмите комментарий '_id' в результаты группы, как вы делали с' user', например. 'comment_id: {" $ first ":" $ _id "}'. – wdberkeley