【发布时间】:2014-10-15 08:49:37
【问题描述】:
我有一个包含以下“模式”的集合:
{
"_id": { "$oid": "543cd94799c3ff7a2850a1b6" },
"Type": 1,
"Information": [
{
"Type" : 2,
"Colors": [],
"Heights": [],
"Widths": []
}
]
}
我有嵌套在数组“信息”中的“颜色”、“高度”、“宽度”数组。
我正在尝试使用以下更新查询更新集合中的一些文档:
var query = Query.And(Query.Exists(Entity.INFORMATION + "." + Information.COLORS),
Query.Exists(Entity.INFORMATION + "." + Information.HEIGHTS),
Query.Exists(Entity.INFORMATION + "." + Information.WIDTHS),
Query.EQ(Entity.TYPE, typeId),
Query.ElemMatch(Entity.INFORMATION, Query.EQ(Information.TYPE, informationTypeId)));
var update = MongoDB.Driver.Builders.Update.Set(Entity.INFORMATION + ".$." + Information.WIDTHS, new BsonArray(new Width[0]))
.Set(Entity.INFORMATION + ".$." + Information.COLORS, new BsonArray(new Color[0]))
.Set(Entity.INFORMATION + ".$." + Information.HEIGHTS, new BsonArray(new Height[0]))
.Set(Entity.INFORMATION + ".$." + Information.TYPE, BsonNull.Value);
Collection.Update(query, update, UpdateFlags.Multi);
似乎只有第一个文档受到影响。其余的不受影响。
如何修复此更新查询以使其也适用于其余文档?我使用了 UpdateFlags.Multi 但没有运气..
我想将信息类型设置为空并清除信息数组中的嵌套数组。
【问题讨论】:
-
有没有人可以真正帮助我解决这个问题?
-
这看起来是正确的。您能否尝试在 shell 中执行此查询并查看它是否涉及多个文档?
-
我会在家里试试,然后告诉你。
-
它不起作用。还有其他帮助吗?
标签: c# mongodb collections updates mongodb-.net-driver