2016-03-06 63 views
-2

我必須增加在MongoDB中值item類:如何使用C#

class item 
    { 
     [BsonId] 
     public ObjectId _id { get; set; } 

     public int code { get; set; } 
     public string Name { get; set; } 
     public int salePrice { get; set; } 
     public int itemCount{ get; set; } 


    } 

我喜歡一個使用code

我可以用2步做到這一點更新itemCount

第一個:使用code作爲過濾器查找itemCount

var filter = Builders<item>.Filter.Eq("code", listitems.code); 
var itemsCollection = _database.GetCollection<item>("item"); 
var itemsList = itemsCollection.Find(filter).ToList<item>(); 

:增量itemCount,然後更新文件:

int itemsCounter = 0; 
    if (itemsList.Count()>0) 
    itemsCounter = itemsList.ElementAt(0).itemCount; 
    itemsCounter++ ; 
filter = Builders<item>.Filter.Eq("code", listitems.code); 
itemsCollection = _database.GetCollection<item>("item"); 
var update = Builders<item>.Update.Set("itemCount", itemsCounter); 
var result = itemsCollection.UpdateOne(filter, update); 

我的問題:我能做到這一步?

+1

我們展示你的努力。發佈你的代碼 – Saleem

+0

我建議你看看文檔http://mongodb.github.io/mongo-csharp-driver/2.2/getting_started/quick_tour/ – Saleem

+0

謝謝,我的代碼工作,但這不是問題!我喜歡找到更短的方式來做到這一點。 – Khorshid

回答

1

這個答案在一個步驟:

var filter = Builders<BsonDocument>.Filter.Eq("code", listitems.code); 
    var update = new BsonDocument("$inc", new BsonDocument { { "itemCount", 1 } }); 
    var coll = _database.GetCollection<BsonDocument>("item"); 
    var doc = coll.FindOneAndUpdateAsync(filter, update).Result;