2010-11-09 33 views
4

J'ai réussi à insérer un nouveau document en utilisant le code suivant mais je n'ai pas pu obtenir le _id du document nouvellement inséré.Comment puis-je obtenir le _id du document inséré après un insert en utilisant mongo csharp?

Après l'insertion, l'utilisateur est null. Je vous remercie!

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

création de ObjectIds sur le client, pas le serveur, ce qui devrait être tout à fait possible. Je ne sais pas assez sur le pilote C# pour vous aider, désolé :( –

Répondre

7

J'ai fait quelques tests avec le fonctionnaire pilote et trouvé cette méthode MongoCollection.Save renvoie null; Donc, ne donnez pas suite à votre utilisateur construit:

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

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

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

A propos des pilotes vérifier sont effectués this et this

+1

Je passais encore plus de temps avec le code hier soir et j'ai pu arriver à la même conclusion. Merci! – atbebtg

3

Utilisez this C# driver et votre code sera comme ceci:

 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", "[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); 

Je suis _id == 4cd9e240df53ca112c000001

Bonne chance !;)

+1

Merci Cela fonctionnera mais je veux vraiment trouver un moyen de le faire en utilisant le pilote officiel du pilote pas Samus :) – atbebtg

+0

cela fonctionne avec Le dirver officiel et BsonDocument –