2016-03-06 36 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;