02.MongoDB 增查改删 - C#

发布于:2022-10-15 ⋅ 阅读:(408) ⋅ 点赞:(0)

02.MongoDB 增查改删 - C#

一、前言

本文介绍如何使用官方的C# MondoDB Driver进行CRUD操作。

C# Driver:MongoDB C#/.NET Driver — MongoDB Drivers

更多语言Driver:Start Developing with MongoDB — MongoDB Drivers


二、内容

环境介绍

1.Visual Studio 2022

2…Net 6.0

3.MongoDB.Driver 2.17.1


第一步:安装Nuget包

安装Nuget包:MongoDB.Driver

在这里插入图片描述


第二步:建立连接

MongoDB的默认端口是27017

// 使用连接字符串连接
var client = new MongoClient("mongodb://localhost:27017");

第三步:使用数据库

使用名为bookdb的数据库,如果没有则会在第一次使用时自动创建该数据库

// 使用名为bookdb的数据库,如果没有则会在第一次使用时自动创建该数据库
var database = client.GetDatabase("bookdb");

第四步:使用集合

集合类似于关系数据库中的表。

此例使用名为books的集合,如果没有则会在第一次使用时自动创建该集合。

这里使用了BsonDocument来作为获取的集合的泛型参数,

当集合是动态时,会使用此类型,

一般情况下会使用自定义类作为泛型参数,使用自定义类时需要进行类映射,之后再做进一步介绍。

// 使用名为books的集合,如果没有则会自动创建该集合
var collection = database.GetCollection<BsonDocument>("books");

第五步:插入文档

文档类似于关系数据库中的一行记录。

1.插入一条记录

使用InsertOne或InsertOneAsync插入一个文档。

var book = new BsonDocument
{
    { "name", "凡人修仙传" },
    { "isbn", "9787806807583" },
    { "price", 280 },
};

// 插入文档
collection.InsertOneAsync(book);
2.插入多条记录

使用InsertMany或InsertManyAsync插入多个文档。

var book1 = new BsonDocument
{
    { "name", "斗破苍穹" },
    { "isbn", "9787535381668" },
    { "price", 695 },
};

var book2 = new BsonDocument
{
    { "name", "斗罗大陆" },
    { "isbn", "9787806806890" },
    { "price", 364 },
};

// 插入多个文档
collection.InsertMany(new List<BsonDocument> { book1, book2 });

第六步:查询文档

1.查找所有文档

使用Find或FindAsync查找文档。

    // 查找所有文档
    var documents = collection.Find(new BsonDocument()).ToList();

    Console.WriteLine(documents.Count); // 输出:3
2.迭代处理文档

如果文档数量很大,则可以使用ForeachAsync查找文档

        // 迭代处理多个文档
        await collection.Find(new BsonDocument()).ForEachAsync(doc =>
        {
            Console.WriteLine(doc);
        });

输出内容如下:

在这里插入图片描述

3.条件筛选单个文档

Eq:Equals简写。

        // 条件筛选单个文档
        // 查找名称为"凡人修仙传"的书籍
        var filter = Builders<BsonDocument>.Filter.Eq("name", "凡人修仙传");

        var doc = collection.Find(filter).First();

        Console.WriteLine(doc);

输出内容如下:

在这里插入图片描述

4.条件筛选多个文档

Gt:Greater than,大于。

        // 条件筛选多个文档
        // 查找价格大于300的书籍
        var filter = Builders<BsonDocument>.Filter.Gt("price", 300);

        await collection.Find(filter).ForEachAsync(doc =>
        {
            Console.WriteLine(doc);
        });

输出结果:

在这里插入图片描述


第七步:修改文档

使用UpdateOne或UpdateOneAsync修改单个文档。

1.修改单个文档
        // 查找名称为"凡人修仙传"的书籍
        var filter = Builders<BsonDocument>.Filter.Eq("name", "凡人修仙传");
        // 修改价格为360
        var update = Builders<BsonDocument>.Update.Set("price", 360);

        // 修改单个文档
        collection.UpdateOne(filter, update);
2.修改多个文档

使用UpdateMany或UpdateManyAsync修改多个文档。

        // 查找价格大于360的书籍
        var filter = Builders<BsonDocument>.Filter.Gt("price", 360);
        // 修改价格为400
        var update = Builders<BsonDocument>.Update.Set("price", 400);

        // 修改多个文档
        collection.UpdateMany(filter, update);

第八步:删除文档

1.删除单个文档

使用DeleteOne或DeleteOneAsync删除单个文档。

    // 查找名称为"凡人修仙传"的书籍
    var filter = Builders<BsonDocument>.Filter.Eq("name", "凡人修仙传");

    // 删除单个文档
    collection.DeleteOne(filter);
2.删除多个文档

使用DeleteMany或DeleteManyAsync删除多个文档。

        // 查找价格大于360的书籍
        var filter = Builders<BsonDocument>.Filter.Gt("price", 360);

        // 删除多个文档
        collection.DeleteMany(filter);

第九步:其他操作

1.统计文档

使用CountDocuments或CountDocumentsAsync统计文档数量。

    // 统计文档数量
    var count = collection.CountDocuments(new BsonDocument());
2.文档排序
    // 筛选包含价格的数据
    var filter = Builders<BsonDocument>.Filter.Exists("price");
    // 按价格倒序排列
    var sort = Builders<BsonDocument>.Sort.Descending("price");

    // 对文档进行排序
    await collection.Find(filter).Sort(sort).ForEachAsync(doc =>
    {
        Console.WriteLine(doc);
    });

输出结果:

在这里插入图片描述


三、后语

至此,已完成使用官方的C# MondoDB Driver进行简单的CRUD操作。


网站公告

今日签到

点亮在社区的每一天
去签到