2010-11-09 69 views
4

我能夠使用以下代碼成功插入新文檔,但無法獲取新插入文檔的_id。如何在插入後使用mongo csharp獲取rcently插入文檔的_id?

插入後,用戶爲空。謝謝!

MongoServer server = MongoServer.Create(); 
MongoDatabase test = server.GetDatabase("Test"); 

MongoCollection<BsonDocument> users = test.GetCollection("Users"); 
BsonDocument user = new BsonDocument(); 
user.Add("FirstName", "John"); 
user.Add("LastName", "Michael"); 
user.Add("Address", "123 Main Street"); 
user.Add("City", "Newport Beach"); 
user.Add("State", "CA"); 
user.Add("ZipCode", "92660"); 
user.Add("Email", "[email protected]"); 
user.Add("CreatedDate", DateTime.Now); 
user.Add("IPAddress", "10.1.1.1"); 

user = users.Save(user); 

string idSTring = user["_id"].ToString().Replace("\"", ""); 
+0

創作的ObjectID的是在客戶端,而不是在服務器上完成,所以這應該完全是可能的。雖然對c#驅動程序不夠了解,但對不起:( – 2010-11-11 13:32:58

回答

7

我與官方做了一些測試驅動程序,並發現該方法MongoCollection.Save返回null;所以不分配結果您構建用戶:

//user = users.Save(user); 
users.Save(user); 

string idStr = user["_id"].ToString(); 

Console.WriteLine("_id == {0}", idStr); 

關於司機檢查thisthis

+1

我昨晚在代碼中弄得更多,實際上能夠得出相同的結論。謝謝! – atbebtg 2010-11-11 17:35:18

3

使用this C# driver和您的代碼將是這樣的:

 var refMongo = new Mongo(); 

     refMongo.Connect(); 

     var test = refMongo.GetDatabase("Test"); 

     var users = test.GetCollection("Users"); 

     var user = new MongoDB.Document(); 

     user.Add("FirstName", "John"); 
     user.Add("LastName", "Michael"); 
     user.Add("Address", "123 Main Street"); 
     user.Add("City", "Newport Beach"); 
     user.Add("State", "CA"); 
     user.Add("ZipCode", "92660"); 
     user.Add("Email", "John.Mic[email protected]"); 
     user.Add("CreatedDate", DateTime.Now); 
     user.Add("IPAddress", "10.1.1.1"); 

     users.Save(user); 

     string idSTring = user["_id"].ToString(); 

     Console.WriteLine(idSTring); 

我得到了_id == 4cd9e240df53ca112c000001

祝你好運!;)

+1

謝謝。這可行,但我真的想用一個官方驅動程序而不是samus驅動程序來實現這個功能:) – atbebtg 2010-11-10 18:01:38

+0

官方的dirver和BsonDocument – 2017-09-20 20:49:08