簡體   English   中英

Mongo DB使用Mongo C#驅動程序更新嵌套對象

[英]Mongo DB update nested object using Mongo C# Driver

我對mongodb不太熟悉,而且我喜歡面向文檔的數據庫。 我的應用程序具有以下業務實體類:

public class ItemCategory
{
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id { get; set; }
    public string CategoryName { get; set; }
    public IList<Item> Items { get; set; }
}

public class Item
{
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id { get; set; }
    public string ItemName { get; set; }

    [BsonRepresentation(BsonType.Double)]
    public decimal UnitPrice { get; set; }
}

這是我的Context類

public class MongoDbContext
{
    private MongoDatabase database;

    public MongoDatabase Database
    {
        get { return database; }
        set { database = value; }
    }

    public MongoDbContext()
    {
        var client = new MongoClient(Settings.Default.constr);
        var server = client.GetServer();
        Database= server.GetDatabase(Settings.Default.db);            
    }

    public MongoCollection<ItemCategory> ItemCategories 
    { 
        get
        {
            return Database.GetCollection<ItemCategory>("itemcategories"); 
        }
    }
}

當我想通過嵌套在“ ItemCategory”實體中的ID更新特定的“ Item”實體時,該怎么辦。

首先,您應該通過Query類找到目標文檔,然后必須使用Update類來更新文檔

在我的示例中,我將文檔的CategoryName屬性從"old name""new category name"

var collection = database.GetCollection<ItemCategory>("itemcategories");

var query = Query.And(Query<ItemCategory>.EQ(c => c.Id, "id"), Query<ItemCategory>.EQ(c => c.CategoryName, "old name"));
var update = Update<ItemCategory>.Set(c => c.CategoryName, "new category name");

collection.Update(query, update);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM