2013-04-24 107 views
0

我有一个具有集合状态的mongo服务器。每当一个新的状态添加它是保存在我的服务器。但是,当我尝试在前端编辑集合时,它将作为另一个新集合保存在具有不同ID的我的服务器中。如何克服这一点。如何使用C更新mongodb集合#

 public static void CreateData(string pass ,string pass1) 
     { 

      string StateCode = pass; 
      string stateName = pass1; 
      insertState(StateCode, stateName); 

     } 



     private static void insertState(string StateCode, string stateName) 
     { 
     MongoServer server = MongoServer.Create(ConnectionString); 
     MongoDatabase myCompany = server.GetDatabase("BackOffice"); 

     MongoCollection<BsonDocument> tblStates = myCompany.GetCollection<BsonDocument>("tblStates"); 
     BsonDocument deptartment = new BsonDocument { 
        { "State_strCode", StateCode }, 
        { "State_strName", stateName }, 
        {"States_strIsActive","Y"}, 
        {"State_strFedExStateCode",""}, 
        {"State_dtmTimeStamp",DateTime.Now} 
        }; 
     tblStates.Insert(deptartment); 
     } 

回答

1

你最好定义一个结构或设置一个PK:

public class Customer 
{ 
    public string name { get; set; } 
    [MongoDB.Bson.Serialization.Attributes.BsonId] 
    public string idCol { get; set; } 
} 

,并更新你的对象是这样

public void Update(Customer cus) 
    { 
     if (cus != null) 
     { 
      MongoDB.Driver.MongoClient client = new MongoClient(_connectionString); 
      MongoDatabase db = client.GetServer().GetDatabase(_dbName); 
      db.GetCollection(_dbName).Save(cus); 
     } 

    } 
+0

这是正确的。这里是文档:http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/ – Andrei 2013-04-24 08:01:27

+0

MongoCollection tblGenre = m ydb.GetCollection (“tblGenre”) ; ; var query = new QueryDocument {“Genre_strCode”,GenerCode} }; var update = new UpdateDocument {“$ set”,new BsonDocument(“Genre_strName”,GenerName)} }; tblGenre.Update(query,update); – Aarthi 2013-04-26 12:05:00

+0

我试过的上面的代码是正确的 – Aarthi 2013-04-26 12:09:39