mongoose 查询每一条数据是否被点赞和点赞的数量

在下面的例子中,我们使用$lookup操作符来关联查询用户的点赞。通过指定from参数为'upvotes,我们告诉MongoDB要从’upvotes’集合中进行关联查询。然后,我们使用let和pipeline参数来定义关联查询的条件。let 子句允许你在 $lookup 阶段中定义变量,这些变量可以在后续的管道操作中使用在这个例子中,我们使用$match操作符来过滤出与用户ID相匹配的点赞,最后,我们使用as参数来指定关联查询结果的字段名。

注意,&&用于引用系统变量,而$用于引用在当前管道阶段中定义的变量。在下面的例子中,$$upvoteId引用了upvotes集合中upvoteId字段,而upvoteId引用了在$lookup阶段中定义的变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$lookup: {
from: "upvotes",
let: {
upvoteId: '$upvoteId'
},
pipeline: [{
$match: {
$expr: {
$and: [
{
$eq: ['$upvoteId', '$$upvoteId']
},{
$eq: ['$userId', new ObjectId(userId)]
} // 假设userId是当前用户ID的字符串或ObjectId
]
}
}
}],
as: "hasLike"
},

在下面的例子中,我们使用$addFields操作符在返回的集合中计算结果。使用$cond可以根据指定的条件,在更新文档时对字段进行条件判断并更新。在这里根据上面定义的$hasLike字段,用$gt来判断结果是否大于0,如果大于0返回true否则false

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$addFields: {
hasLike: {
$cond: {
if: {
$gt: [
{ $size: '$hasLike' }, 0
]
},
then: true,
else: false
}
},
like: {
$size: "$likeCount"
}
}

Git报错: Failed to connect to github.com port 443

本人解决方法在自己拥有vpn情况下,如果自己的vpn可以流畅进入Github网页,但是git操作不行,说明vpn并没有代理的git相关操作。因此需要配置git的代理。

那么在对git进行代理的时候,就用本机的IP地址+对应的端口号(VPN代理地址的端口号)。

1
2
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890