Для добавления данных в коллекцию у объекта IMongoCollection применяются методы: InsertOneAsync (для добавления одного документа) и InsertManyAsync() (для добавления набора документов).
Метод InsertOneAsync() в качестве обязательного параметра принимает добавляемый документ. Например, добавим в коллекцию people один документ:
using MongoDB.Bson; using MongoDB.Driver; MongoClient client = new MongoClient("mongodb://localhost:27017"); // получаем базу данных test var db = client.GetDatabase("test"); // получаем из бд коллекцию users var users = db.GetCollection<BsonDocument>("users"); // документ для добавления BsonDocument tom = new BsonDocument { {"Name", "Tom"}, {"Age", 38} }; // добавляем в коллекцию users документ await users.InsertOneAsync(tom); Console.WriteLine(tom);
Для взаимодействия с коллекций и выполнения различных операций, как добавление данных, вначале надо получить саму коллекцию с помощью метода
GetCollection()
. В данном случае мы получаем коллекцию "users", которая находится в базе данных "test". Обратите внимание, что в данном случае метод
GetCollection()
типизируется типом BsonDocument:
var users = db.GetCollection<BsonDocument>("users");
Соответственно мы сможем добавить в нее объекты типа BsonDocument. И в данном случае добавляем один документ с двумя полями - Name и Age. Также обратите внимание, что после добавления добавленный объект выводится на консоль, и по консольному выводу мы видим, что у него появилось еще одно поле:
{ "_id" : ObjectId("63581e47224917fbf6a66797"), "Name" : "Tom", "Age" : 38 }
Поле "_id" генерируется базой данных MongoDb при добавлении и представляет уникальный идентификатор документа внутри коллекции. По этому идентификатору затем мы можем ссылаться на данный документ.
Метод InsertManyAsync() в качестве обязательного параметра принимает набор документов:
using MongoDB.Bson; using MongoDB.Driver; MongoClient client = new MongoClient("mongodb://localhost:27017"); // получаем базу данных test var db = client.GetDatabase("test"); // получаем из бд коллекцию users var users = db.GetCollection<BsonDocument>("users"); // документы для добавления BsonDocument bob = new BsonDocument { {"Name", "Bob"}, {"Age", 42}}; BsonDocument sam = new BsonDocument { {"Name", "Sam"}, {"Age", 25}}; // добавляем в коллекцию users список документов await users.InsertManyAsync(new List<BsonDocument>{ bob, sam}); Console.WriteLine(bob); Console.WriteLine(sam);
Однако мы можем добавлять в коллекцию не только документы BsonDocument, но и объекты стандартных классов C#. Например, добавим в коллекцию объекты класса Person:
using MongoDB.Bson; using MongoDB.Driver; MongoClient client = new MongoClient("mongodb://localhost:27017"); // получаем базу данных test var db = client.GetDatabase("test"); // получаем из бд коллекцию users // коллекция типизируется типом Person var users = db.GetCollection<Person>("users"); // объект для добавления Person alice = new Person { Name="Alice", Age= 33 }; // добавляем в коллекцию users await users.InsertOneAsync(alice); Console.WriteLine(alice.Id); // получаем сгенерированный Id class Person { public ObjectId Id { get; set; } public string Name { get; set; } = ""; public int Age { get; set; } }
Так как коллекция будет хранить данные типа Person, то она типизируется данным типом:
var users = db.GetCollection<Person>("users");
В данном случае объекты Person будут выступать в роли документов.
При добавлении, если для объекта не установлен идентификатор "_id", то он автоматически генерируется. И затем мы его можем получить.