Я использую драйвер MongoDB C#, и я хочу знать, как очистить вложенный массив в MongoDB, используя запрос на обновление.Как очистить вложенный массив в коллекции в MongoDB?
Вот моя коллекция, содержащая некоторые документы, следующие ниже «схемы»:
{
"_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);
Но, похоже, не работает.
Пожалуйста, помогите.
Я пробовал следующий родной запрос, но, кажется, не работает:
db.myCollection.update(
{
"Information.Colors": {
$exists: true
},
"Type": 1
},
{
$set: {
"Information.$.Colors": [],
"Information.$.Widths": [],
"Information.$.Heights": [],
"Information.$.Type" : null
}
},
false, true)
Он работает только с первым документом в коллекции.
Остальные остаются неизменными ... :(
есть ли кто-нибудь, кто может помочь мне с этим –