我有一个用户可以互相关注的应用程序,并且关注者是用户的数组,因此我们可以检查给定的用户ID是否在关注者数组中。
当我拉动一个用户时,我可以像这样投射出来:
{
UserName: '$UserName',
IsFollowing : {
$filter : {
input : '$Followers',
as : 'followers',
cond : {
$eq : ['$$followers.UserId', ObjectId('[ID]')]
}
}
}
}
然后反序列化结果以匹配视图模型。
是否可以使用像这样的ProjectionDefinitions创建一个类似上面的过滤器?:
ProjectionDefinition<User> projectiondef = Builders<User>.Projection.Include('UserName');
IsFollowing字段不在用户文档中,所以我不知道如何拉它。