如何使用c#2.0驱动程序将数据插入mongodb集合?

时间:2015-03-29 10:08:35

标签: c# .net mongodb mongodb-.net-driver

  1. 我正在使用c#console应用程序中的MongoClient连接到MongoDB
  2. https://github.com/mongodb/mongo-csharp-driver/releases/tag/v2.0.0-rc0

    1. 我的代码

        class Program
         {
             static void Main(string[] args)
             {
              const string connectionString = "mongodb://localhost:27017";
      
              // Create a MongoClient object by using the connection string
              var client = new MongoClient(connectionString);
      
              //Use the MongoClient to access the server
              var database = client.GetDatabase("test");
      
              var collection = database.GetCollection<Entity>("entities");
      
              var entity = new Entity { Name = "Tom" };
              collection.InsertOneAsync(entity);
              var id = entity._id;          
          }
      }
      
      public class Entity
      {
          public ObjectId _id { get; set; }
          public string Name { get; set; }
      }
      
    2. 成功运行上面的代码后,我无法使用此命令在MongoDB数据库中找到此记录:

      db.entities.find().pretty()
      
    3. 我的代码出了什么问题?

3 个答案:

答案 0 :(得分:17)

这是我为将数据插入MongoDB而创建的方法,现在工作正常。

static async void DoSomethingAsync()
{
    const string connectionString = "mongodb://localhost:27017";

    // Create a MongoClient object by using the connection string
    var client = new MongoClient(connectionString);

    //Use the MongoClient to access the server
    var database = client.GetDatabase("test");

    //get mongodb collection
    var collection = database.GetCollection<Entity>("entities");
    await collection.InsertOneAsync(new Entity { Name = "Jack" });
}

答案 1 :(得分:7)

原因是您需要等待商店才能创建文档。在这种情况下collection.InsertOneAsync(entity);创建文档之前的执行退出。

Console.ReadKey()或collection.InsertOneAsync(entiry).Wait()或任何其他形式的停止退出只需几分之一就可以解决问题。

答案 2 :(得分:5)

.net 4.5及更高版本和mongodriver 2x系列遵循以下代码

var Client = new MongoClient();
var MongoDB = Client.GetDatabase("shop");
var Collec = MongoDB.GetCollection<BsonDocument>("computers");
var documnt = new BsonDocument
{
    {"Brand","Dell"},
    {"Price","400"},
    {"Ram","8GB"},
    {"HardDisk","1TB"},
    {"Screen","16inch"}
};
Collec.InsertOneAsync(documnt);
Console.ReadLine();