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

MongoDB C#:如何基于数组字段与过滤数组构建FilterDefinition

嵌套数组匹配过滤实现

针对需求,这里提供两种简洁的实现方式:

方法一:使用 ElemMatch 结合 Contains

通过 ElemMatch 指定数组元素的匹配条件,判断 EntityID 是否存在于 Materials 数组中:

// 替换 YourModelType 为实际的模型类名
var filter = Builders<YourModelType>.Filter.ElemMatch(
    model => model.RawMaterials,
    rawMaterial => Materials.Contains(rawMaterial.EntityID)
);

方法二:使用 In 结合数组占位符

利用 MongoDB 数组下标 -1(代表数组中任意元素),结合 In 方法实现匹配,写法更简洁:

// 替换 YourModelType 为实际的模型类名
var filter = Builders<YourModelType>.Filter.In(
    model => model.RawMaterials[-1].EntityID,
    Materials
);

注意事项

  • 确保 Materials 数组不为空,否则过滤条件会匹配不到任何文档;
  • 如果需要给嵌套元素添加多个匹配条件(比如同时判断 EntityID 和 Title),优先选择 ElemMatch,它支持组合多条件;
  • 两种写法的查询效果一致,可根据代码风格偏好选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:01:21