Сохранение документов в базу данных

Последнее обновление: 25.10.2022

Для добавления данных в коллекцию у объекта IMongoCollection применяются методы: InsertOneAsync (для добавления одного документа) и InsertManyAsync() (для добавления набора документов).

InsertOneAsync

Метод 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

Метод 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);

Добавление Poco-объектов

Однако мы можем добавлять в коллекцию не только документы 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", то он автоматически генерируется. И затем мы его можем получить.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850