Поскольку ваша UserSchema не содержит много информации, это, вероятно, проще всего, если вы не пытаетесь подделать соединение через функцию популяции Mongoose. Используя MongoDB самостоятельно, выполнение этого было бы выполнено с помощью одной операции. Ниже я просто сохраняю поле «_id» некоторого пользовательского документа, который я хочу ссылаться.
> var userID = userdoc._id;
> db.comments.update({ _id : commentID },
{ $push : { likes : userID } });
Делать это с Мангустой может потребовать от вас немного изменить схему:
var CommentSchema = new Schema({
commentContent : String,
commentPostTime : Number,
likes : [ObjectId],
likeCount: {type: Number, default:0}
})
Затем, вы можете просто добавить новый пользователь в список подобных и увеличиваете likeCount поля с помощью следующего запроса :
Comment.findByIdAndUpdate(commentID, { $push : { likes : "samantha" }, $inc : { likeCount : 1 } });
Это лучше, чем использование населения Мангуста? Обработка ваших данных таким образом сделает дополнительный шаг, когда вы будете искать пользователей из комментариев. Во-первых, вам придется захватить идентификатор пользователя из списка понравившихся в комментарии, тогда вам придется запустить отдельный запрос, чтобы получить документ этого пользователя. Однако, поскольку ваш прецедент не требует какого-либо поиска в пользовательских документах, этот подход должен хорошо работать для вас. Я считаю, что этот двухэтапный процесс - это то, что Мангуст делает под капотом в любом случае с помощью своего метода популяции. Лично я в порядке с дополнительным шагом поиска в обмен на больший контроль над моими данными.