2015-06-09 113 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); 
}