Как обновить документ mongodb для добавления нового элемента в массив?
Я не мог вычислить вставку в дополнительный массив...
- _id
- MyArray
- - элемент
- ---- ArrayItemId
- ---- Имя
Я хочу вставить элементы в MyArray...
Как мой документ обновления должен быть?
MyCollection.Update(
new QueryDocument { { "_id", MyObject.Id } },
new UpdateDocument { { "$set", new BsonDocument { { "MyArray",
new BsonArray { new BsonDocument {{ "ArrayItemId", myArrayField.Id }},
new BsonDocument {{ "Name", myArrayField.Name }} }}}}},
UpdateFlags.None);
Ответы
Ответ 1
Вставка в массив выполняется с помощью оператора $push
.
В качестве побочного примечания вам не нужно использовать QueryDocument
и UpdateDocument
. Там гораздо проще вспомогательный синтаксис:
MyCollection.Update(Query.EQ("_id", MyObject.Id),
Update.PushWrapped("MyArray", myArrayField)
Обратите внимание, что PushWrapped<T>
позволяет подталкивать документы, а Push
принимает только такие типы, которые могут быть представлены простым полем в MongoDB.
Ответ 2
Синтаксис для нового асинхронного адаптера MongoDB С#:
var filter = Builders<myObject>
.Filter.Eq(e => e.Name, "name");
var update = Builders<myObject>.Update
.Push<String>(e => e.MyArray, myArrayField);
await collection.FindOneAndUpdateAsync(filter, update);