Insert new document using InsertOneAsync (.NET Driver 2.0)
16,722
Solution 1
Your method should be like
public async void Insert()
{
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("foo");
var collection = database.GetCollection<BsonDocument>("bar");
var document = new BsonDocument { { "_id", 1 }, { "x", 2 } };
await collection.InsertOneAsync(document);
}
Solution 2
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("foo");
var collection = database.GetCollection<BsonDocument>("bar");
var document = new BsonDocument { { "_id", 1 }, { "x", 2 } };
Task task = collection.InsertOneAsync(document);
task.Wait();
// From here on, your record/document should be in the MongoDB.
Comments
-
Hana over 1 year
In the older .Net API version :
MongoClient client = new MongoClient(); var server = client.GetServer(); var db = server.GetDatabase("foo"); var collection = db.GetCollection<BsonDocument>("bar"); var document = new BsonDocument { { "_id", 1 }, { "x", 2 } }; collection.Save(document);
It worked.
When i use new .Net Driver 2.0 :
var client = new MongoClient("mongodb://localhost:27017"); var database = client.GetDatabase("foo"); var collection = database.GetCollection<BsonDocument>("bar"); var document = new BsonDocument { { "_id", 1 }, { "x", 2 } }; await collection.InsertOneAsync(document);
Error : The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.
Refs :
Introducing the 2.0 .NET Driver
I want to ask how to insert a new document using .Net Driver 2.0. Thanks.
[Update 1] I tried to implement :
public class Repository { public static async Task Insert() { var client = new MongoClient("mongodb://localhost:27017"); var database = client.GetDatabase("foo"); var collection = database.GetCollection<BsonDocument>("bar"); var document = new BsonDocument { { "_id", 1 }, { "x", 2 } }; await collection.InsertOneAsync(document); } } static void Main(string[] args) { Task tsk = Repository.Insert(); tsk.Wait(); Console.WriteLine("State: " + tsk.Status); }
Result : WaitingForActivation. Nothing changed in database. Please help me!
[Update 2 (Solved)] : add tsk.Wait(); It worked ! Thanks this post : How would I run an async Task method synchronously?
-
Hana about 9 yearsi tried as u said. Repository respository = new Repository(); Task tsk = respository.Insert(); Console.WriteLine("State: " + tsk.Status); Result : WaitingForActivation.
-
Hana about 9 yearsNothing changed in database ! I dont know why. I never used async or task before so i dont know why. Can u help me ?
-
Dhaval Patel about 9 yearsya sure but do one thing please make sure your connection is working fine I mean you can fetch the data from mongo ? because async and await is nothing but it's just free your main thread
-
Hana about 9 yearsTks for your help! i add : tsk.Wait();. It worked. Hmm! Im really bad at synchronise.