You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB C#中如何按关联集合字段查询用户数据?

解决方案

你当前的代码仅在User集合内匹配用户名称,没有关联Group集合实现按组名称筛选。要完成需求,需要通过Lookup关联两个集合,再过滤组名称条件。

步骤1:定义聚合结果DTO

首先需要一个包含关联组信息的类,用于接收聚合查询的结果:

public class UserWithGroup
{
    public string Id;
    public string Name;
    public string GroupId;
    public Group Group;
}

步骤2:修改聚合查询逻辑

使用Lookup关联Group集合,再筛选组名称为"xyz"的用户:

return userCollection.Aggregate<UserWithGroup>(new AggregateOptions
{
    Collation = new Collation("en", strength: CollationStrength.Primary)
})
// 关联Group集合,通过GroupId匹配Group的Id字段
.Lookup(
    foreignCollection: groupCollection,
    localField: u => u.GroupId,
    foreignField: g => g.Id,
    @as: u => u.Group
)
// 过滤出组名称为"xyz"的用户,同时排除无有效组的记录
.Match(u => u.Group != null && u.Group.Name == "xyz")
// 可选:如果不需要返回组信息,添加Project只保留User原有字段
// .Project(u => new User { Id = u.Id, Name = u.Name, GroupId = u.GroupId })
.AsExecutable();

关键说明

  • Lookup操作会将每个用户对应的组数据嵌入到结果对象中,是跨集合关联的核心步骤
  • Match阶段增加u.Group != null判断,避免因无效GroupId导致的空引用问题
  • 如果不需要返回组信息,可通过Project阶段裁剪返回字段,只保留User的原有属性

内容的提问来源于stack exchange,提问作者Ekin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:40:54