mongoose 查询每一条数据是否被点赞和点赞的数量
在下面的例子中,我们使用$lookup操作符来关联查询用户的点赞。通过指定from参数为'upvotes,我们告诉MongoDB要从’upvotes’集合中进行关联查询。然后,我们使用let和pipeline参数来定义关联查询的条件。let 子句允许你在 $lookup 阶段中定义变量,这些变量可以在后续的管道操作中使用在这个例子中,我们使用$match操作符来过滤出与用户ID相匹配的点赞,最后,我们使用as参数来指定关联查询结果的字段名。
注意,
&&用于引用系统变量,而$用于引用在当前管道阶段中定义的变量。在下面的例子中,$$upvoteId引用了upvotes集合中upvoteId字段,而upvoteId引用了在$lookup阶段中定义的变量。
1 | $lookup: { |
在下面的例子中,我们使用$addFields操作符在返回的集合中计算结果。使用$cond可以根据指定的条件,在更新文档时对字段进行条件判断并更新。在这里根据上面定义的$hasLike字段,用$gt来判断结果是否大于0,如果大于0返回true否则false
1 | $addFields: { |
mongoose 查询每一条数据是否被点赞和点赞的数量