Учебное пособие по MongoDB C# (простой способ)

Цель этой статьи — познакомить вас с альтернативным, менее подробным и удобным способом хранения и извлечения данных на сервере MongoDB по сравнению с тем, что вы обычно видите в подобных руководствах. надеюсь, к концу этой статьи вы прозреете и решите отказаться от SQL Server и Entity Framework и сесть на поезд монго.

если на вашем компьютере еще не запущен сервер mongodb, следуйте этот учебник прежде чем двигаться вперед.

создать новый проект консольного приложения, используя таргетинг Visual Studio .net core или введите следующее в окне powershell/cmd:

dotnet new console -n LearnMongo
start .\LearnMongo\LearnMongo.csproj

откройте консоль диспетчера пакетов и введите следующее:
кончик: tools > nuget package manager > package manager console

Install-Package MongoDB.Entities

открытым Program.cs файл и сделайте так, чтобы он выглядел следующим образом:

using MongoDB.Entities;

namespace LearnMongo
{
    class Program
    {
        private static void Main(string[] args)
        {
            new DB("MyDatabase", "localhost", 27017);
        }
    }
}

мы указываем, что это приложение должно хранить наши данные в базе данных с именем MyDatabase на сервере mongodb, работающем на localhost прослушивание порта по умолчанию.

добавить новый файл класса с именем Person.cs в проект и сделать так, чтобы он выглядел следующим образом:

using MongoDB.Entities.Core;
using System;

namespace LearnMongo
{
    class Person : Entity
    {
        public string Name { get; set; }
        public DateTime DateOfBirth { get; set; }
        public int SiblingCount { get; set; }
    }
}

основные/корневые объекты, которые вы хотите сохранить в mongodb, должны наследоваться от класса Entity который предоставляется пакетом, который мы установили ранее.

затем вернитесь к Program.cs файл и добавьте следующее ниже строки инициализации db:

    var lisa = new Person {
        Name = "Lisa Malfrey",
        DateOfBirth = new DateTime(1983, 10, 11),
        SiblingCount = 1
    };

    lisa.Save();

    Console.WriteLine($ "Lisa's ID: {lisa.ID}");
    Console.Read();

теперь запустите программу, нажав ctrl+f5. вы увидите, что объект был сохранен и ему автоматически был присвоен идентификатор.

примечание: свойство ID исходит из базы Entity class, чтобы нам не приходилось добавлять его вручную к каждой создаваемой нами сущности.

если вы заглянете внутрь базы данных с помощью диспетчера баз данных или оболочки mongo, вы увидите, что коллекция называется Person была создана и добавлена ​​новая запись, которая выглядит так:

{
    "_id": ObjectId("5e0c682ddd3765736cb8ca56"),
    "Name": "Lisa Malfrey",
    "DateOfBirth": ISODate("1983-10-10T18:30:00Z"),
    "SiblingCount": 1
}

данные могут быть получены несколькими различными способами. Вот несколько примеров:

найти по ID

    var result = DB.Find<Person>().One(lisa.ID);

    Console.WriteLine($ "Found Person: {result.Name}");
    Console.Read();

найти по количеству братьев и сестер

    var result = DB.Find<Person>()
                   .Many(p => p.SiblingCount >= 1)
                   .First();

    Console.WriteLine($"Count: {result.SiblingCount}");
    Console.Read();

здесь мы говорим найти много Person юридические лица, у которых есть хотя бы 1 брат или сестра. в .First() linq просто выбирает первого человека из найденного списка.

найти по диапазону дат

    var result = DB.Queryable<Person>()
                   .Where(p => p.DateOfBirth > new DateTime(1983, 10, 10) &&
                               p.DateOfBirth < new DateTime(1983, 10, 12))
                   .First();

    Console.WriteLine($"Birthday: {result.DateOfBirth.ToLocalTime()}");
    Console.Read();

здесь мы используем IQueryable Интерфейс для получения первого человека, дата рождения которого попадает в диапазон двух дат.

вы можете либо получить весь объект, обновить его свойства и сохранить обратно в базу данных, либо обновить определенные свойства объектов без предварительного их извлечения.

обновление путем получения полного объекта

    var lisa = DB.Find<Person>().One(lisa.ID);

    lisa.Name = "Lisa Kudrow";
    lisa.SiblingCount = 2;

    lisa.Save();

обновить свойства без получения

    DB.Update<Person>()
      .Match(p => p.ID == lisa.ID)
      .Modify(p => p.Name, "Lisa Kudrow")
      .Modify(p => p.SiblingCount, 2)
      .Execute();

надеюсь, приведенный выше код вызвал у вас достаточно интереса, чтобы углубиться в изучение простого использования mongodb с C#. посылка MongoDB.Entities позволяет чрезвычайно легко общаться с сервером mongodb. каждый аспект его API был задокументирован в вики-разделе пакета. репозиторий github.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *