2015-06-09 4 views
4

У меня есть это:Вставить элемент в вложен массив в MongoDB

{ 
    "_id" : ObjectId("4fb4fd04b748611ca8da0d48"), 
    "Name" : "Categories", 
    "categories" : [{ 
     "_id" : ObjectId("4fb4fd04b748611ca8da0d46"), 
     "name" : "SubCategory", 
     "sub-categories" : [{ 
      "_id" : ObjectId("4fb4fd04b748611ca8da0d47"), 
      "name" : "SubSubCategory", 
      "standards" : [] 
     }] 
    }] 
} 

Я хотел бы добавить новый ПОДКАТЕГОРИЯ с помощью драйвера C#. Есть ли оптимальный способ сделать это?

ответ

9

Вы можете сделать это с помощью FindOneAndUpdateAsync и позиционного оператора

public async Task Add(string productId, string categoryId, SubCategory newSubCategory) 
{ 
    var filter = Builders<Product>.Filter.And(
     Builders<Product>.Filter.Where(x => x.Id == productId), 
     Builders<Product>.Filter.Eq("Categories.Id", categoryId)); 
    var update = Builders<Product>.Update.Push("Categories.$.SubCategories", newSubCategory); 
    await collection.FindOneAndUpdateAsync(filter, update); 
}