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

MongoDB C# Driver筛选含指定Sizeid的数组元素问题求助

问题解决:MongoDB C# Driver 筛选嵌套数组元素

错误原因分析

你的代码里第一个筛选条件存在字段名拼写错误:将集合中的_id字段写成了temid,这是导致无法匹配到目标文档的核心问题。此外,如果你的需求是仅返回itemLists中Sizeid=2的子文档,当前代码会返回整个父文档的所有itemLists元素,需要额外添加投影操作。

修正后的代码

1. 匹配文档并返回完整父文档(包含所有itemLists元素)

如果只需要确认文档存在并获取完整数据,修正字段名即可:

var filter = Builders<Item>.Filter.Eq(x => x._id, ItemId); // 修正字段名:temid -> _id
var filter2 = Builders<Item>.Filter.ElemMatch(x => x.itemLists, Builders<ItemList>.Filter.Eq(x => x.Sizeid, sizeId));

var data = await Context.GetCollection<Item>("Item").Find(filter & filter2).FirstOrDefaultAsync();

2. 匹配文档并仅返回符合条件的itemLists子文档

如果需要只保留itemLists中Sizeid=2的元素,需添加投影操作:

var filter = Builders<Item>.Filter.Eq(x => x._id, ItemId);
var elemMatchFilter = Builders<Item>.Filter.ElemMatch(x => x.itemLists, il => il.Sizeid == sizeId);

// 投影:仅返回匹配的itemLists元素
var projection = Builders<Item>.Projection.ElemMatch(x => x.itemLists, il => il.Sizeid == sizeId);

var data = await Context.GetCollection<Item>("Item")
    .Find(filter & elemMatchFilter)
    .Project(projection)
    .FirstOrDefaultAsync();

你的集合数据(格式化后)

{
    "_id": NumberInt(2),
    "ItemName": "Shirt",
    "ItemDescripton": "Men Trouser",
    "itemLists": [
        {
            "CategoryId": NumberInt(1),
            "CategpryName": "Men",
            "ColorId": NumberInt(1),
            "ColorName": "Red",
            "InitialQty": NumberInt(30),
            "AvailableQty": NumberInt(28),
            "ReserveQty": NumberInt(2),
            "Price": 4560.0,
            "OfferPrice": 670.0,
            "Images": [
                "/assets/Images/Men/m4.jpg",
                "/assets/Images/Men/m5.jpg"
            ],
            "Sizeid": NumberInt(2),
            "SizeName": "XL",
            "DetailId": NumberInt(0),
            "DeliveryCharges": NumberInt(20),
            "Brand": "Allen Solly",
            "CreatedOn": ISODate("2022-12-07T17:10:19.881+0000"),
            "CreatedBy": "string",
            "Active": true
        },
        {
            "CategoryId": NumberInt(1),
            "CategpryName": "Men",
            "ColorId": NumberInt(2),
            "ColorName": "Blue",
            "InitialQty": NumberInt(10),
            "AvailableQty": NumberInt(6),
            "ReserveQty": NumberInt(4),
            "Price": 1400.0,
            "OfferPrice": 1200.0,
            "Images": [
                "/assets/Images/Men/m3.jpg",
                "/assets/Images/Men/m4.jpg"
            ],
            "Sizeid": NumberInt(1),
            "SizeName": "XL",
            "DetailId": NumberInt(0),
            "DeliveryCharges": NumberInt(120),
            "Brand": "Allen Solly",
            "CreatedOn": ISODate("2022-12-07T17:10:19.881+0000"),
            "CreatedBy": "string",
            "Active": true
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:01:05