簡體   English   中英

MongoWriteException:寫入操作導致錯誤。 位置運算符未從查詢中找到所需的匹配項

[英]MongoWriteException: A write operation resulted in an error. The positional operator did not find the match needed from the query

我有一個收集的Zonedetails,如下所示。 下面。

我正在使用C#插入或更新單位到單位數組。 如果是插入,我可以將Area插入空白。 如果是更新,則應僅更新UnitName。

{ 
    "Code" : "Zone1", 
    "Name" : "ZoneName1", 
    "Units" : [
        {
            "UnitCode" : "Unitcode1", 
            "UnitName" : "UnitCodeName", 
            "Areas" : [
                {
                    "AreaCode" : "AreaCode1", 
                    "AreaName" : "AreaName1"
                }
            ]
        }
    ]
}
{ 
    "Code" : "Zone2", 
    "Name" : "ZoneName2", 
    "Units" : [
        {
            "UnitCode" : "UnitCode2", 
            "UnitName" : "UnityName2", 
            "Areas" : [
                {
                    "AreaCode" : "Areacode2", 
                    "AreaName" : "AreaName2"
                }
            ]
        }
    ]
}
{ 
    "Code" : "Zone3", 
    "Name" : "ZoneName3", 
    "Units" : [
        {
            "UnitCode" : "UnitCode3", 
            "UnitName" : "UnitName3", 
            "Areas" : [
                {
                    "AreaCode" : "Areadcode3", 
                    "AreaName" : "AreaName3"
                }, 
                {
                    "AreaCode" : "AreaCode4", 
                    "AreaName" : "Areaname4"
                }, 
                {
                    "AreaCode" : "AreaCode5", 
                    "AreaName" : "Areaname5"
                }
            ]
        }, 
        {
            "UnitCode" : "UnitCode6", 
            "UnitName" : "UnitName6", 
            "Areas" : [
                {
                    "AreaCode" : "AreaCode10", 
                    "AreaName" : "AreaName10"
                }, 
                {
                    "AreaCode" : "AreaCOde11", 
                    "AreaName" : "AreaName10"
                }, 
                {
                    "AreaCode" : "AreaCode12", 
                    "AreaName" : "AreaName12"
                }
            ]
        }
    ]
}

我已經編寫了如下所示的C#代碼。 但是如果單元代碼不存在,則會收到“ 位置運算符未從查詢中找到所需的匹配項 ”錯誤。 未在unitCode檢查之前添加。

    var mongoCollection = _context.GetCollection<Zone>("ZoneDetail");
    var filter = Builders<Zone>.Filter.Where(x => x.Code == zoneCode && !x.Units.Any(u => u.UnitCode == unit.UnitCode));
    var updateUnitCode = Builders<Zone>.Update.Set(x => x.Units.ElementAt(-1).UnitCode, unit.UnitCode);
    var updateUnitName = Builders<Zone>.Update.Set(x => x.Units.ElementAt(-1).UnitName, unit.UnitName);
    var result = await mongoCollection.UpdateOneAsync(filter, Builders<Zone>.Update.Combine(updateUnitCode, updateUnitName), new UpdateOptions { IsUpsert = true});

您的錯誤消息表明篩選器無法找到匹配的元素。

嘗試更改您的輸入或更改過濾條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM