C# 4.0 使用2级、3级和4级数组的Mongo DB C#代码
我必须使用MongoDB更新C代码。在这里,我在下面实现了更新的第二级数组(subBranchindex是在一个通用列表对象中获取的):-C# 4.0 使用2级、3级和4级数组的Mongo DB C#代码,c#-4.0,mongodb,mongodb-.net-driver,C# 4.0,Mongodb,Mongodb .net Driver,我必须使用MongoDB更新C代码。在这里,我在下面实现了更新的第二级数组(subBranchindex是在一个通用列表对象中获取的):- for(var index=0;index /COD>来修改一个查询中的整个子分支列表< /Cord>数组。使用$set的缺点是,您需要读写整个数组,如果其他并发操作也在对数组进行更新,这可能会成为一个问题。您可能需要尝试反馈别人给您的答案,或者以后人们可能懒得提供答案。看起来您仍在解决与此相关的问题:谢谢您的帮助,但顶级文档有一个travelagent字段
for(var index=0;index
这里是第二级数组,我使用(for循环语句)获取数组的索引值。接下来,我可以使用数组的第三、第四和第五级,这意味着将分配多个(for循环语句)。所以不需要[for loop语句],也不需要在索引中分配硬核编号。
例如:((“BranchOffice.$.SubBranchlist.0.Name”,subBranch.SubName)
。这里没有硬核数字[索引]0或1或2。“二级”阵列中有100多条记录
有什么方法可以用来排列索引值吗?请解释如何解决这个问题。请举例说明。基于上述示例,我对您的模式的理解如下:
- 顶级文档有一个
字段分支机构
是一个对象数组BranchOffice
中的每个对象都有一个分支机构
、\u id
和子名称
字段子分支列表
是一个对象数组子分支列表
子分支列表中的每个对象都有一个
字段名称
子名称
字段复制到子分支列表
(子名称的同级字段)中对象中的每个名称
字段
使用属性路径语法通过数组选择字段(例如SubBranchlist.0.Name
),不存在允许您修改数组中所有对象中的Name
字段的“通配符”索引
另一个相关的注意事项是,只适用于第一个匹配的数组元素,因此不能使用它来更新多个数组元素。在您的情况下,它无论如何都不是一个选项,因为您正在为分支函数
数组字段使用位置运算符
您可以发布一系列更新查询(对于<代码>子分支列表中的每个元素),或者考虑使用<代码> $SET> /COD>来修改一个查询中的整个<代码>子分支列表< /Cord>数组。使用
$set
的缺点是,您需要读写整个数组,如果其他并发操作也在对数组进行更新,这可能会成为一个问题。您可能需要尝试反馈别人给您的答案,或者以后人们可能懒得提供答案。看起来您仍在解决与此相关的问题:谢谢您的帮助,但顶级文档有一个travelagent字段。下一级文档[一个数组字段中的顶级文档]有一个分支。很抱歉,我没有提到顶级文档是旅行社。在这种情况下,您的Update.Set()
函数可能不正确;但是,我上面的观点仍然适用于您对$
的限制以及字段路径中的数字位置。
for (var index = 0; index < subBranchindex.Count; index++)
{
if (subBranchindex[index]._id == new ObjectId(subBranchid))
{
IMongoQuery queryEdit = Query.EQ("BranchOffice.SubBranchlist._id", new ObjectId(subBranchid));
UpdateBuilder update = Update.Set("BranchOffice.$.SubBranchlist."+ index +".Name",subBranch.SubName).
SafeModeResult s = dc.Collection.Update(queryEdit, update,
UpdateFlags.None, SafeMode.True);
}
}