Home Database Mysql Tutorial MongoDB的C#驱动基本使用

MongoDB的C#驱动基本使用

Jun 07, 2016 pm 04:08 PM

MongoDB的官方C#驱动可以通过这个链接得到。链接提供了.msi和.zip两种方式获取驱动dll文件。通过这篇文章来介绍C#驱动的基本数据

MongoDB的官方C#驱动可以通过这个链接得到。链接提供了.msi和.zip两种方式获取驱动dll文件。

通过这篇文章来介绍C#驱动的基本数据库连接,增删改查操作。

在使用C#驱动的时候,要在工程中添加"MongoDB.Bson.dll"和"MongoDB.Driver.dll"的引用。同时要在代码中加入下面两个using语句。

using MongoDB.Bson; using MongoDB.Driver; 

数据库连接

要建立数据库连接,就一定要知道服务器的地址、端口等信息。所有的这些信息,我们都使用连接字符串表示。MongoDB的连接字符串格式如下:

mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]

 下面看看连接字符串中的各个字段的含义:

在这里,使用文章"MongoDB管理"中的例子,test1和test2有各自的用户。当使用下面的连接字符串访问的时候,可以得到正确的验证,因为"Will1:Will1"对test1有读写权限。如果换成访问test2数据库,则会得到一个"Invalid credentials for database 'test2'"的异常输出。

; MongoClient client = new MongoClient(connectionStr); MongoServer server = client.GetServer(); MongoDatabase db = server.GetDatabase(); MongoCollection collection = db.GetCollection(); try { Console.WriteLine(+ db.Name); Console.WriteLine(+ collection.Name); Console.WriteLine(, collection.Count()); } catch (Exception e) { Console.WriteLine(e.Message); }

 从上面的代码中可以看到:

  • 如何获取client和server对象

    ; MongoClient client = new MongoClient(connectionStr); MongoServer server = client.GetServer();

  • 如何获得数据库和collection对象

    MongoDatabase db = server.GetDatabase(); MongoCollection collection = db.GetCollection(); 

  • BsonDocument对象模型

    在开始增删改查的介绍之前,要介绍一下BsonDocument对象模型。

    在MongoDB collection中,每个文档都可以看作一个Bson(Binary JSON)对象,所以在驱动中有个一个BsonDocument类型,可以通过下面的方式生成一个文档,并且通过Add方法添加键/值对。通过这种方式生成的BsonDocument对象可以直接插入collection中。

    BsonDocument student1 = new BsonDocument(); student1.Add(, 10); student1.Add(, ); student1.Add(, ); student1.Add(, 26);

    在MongoDB中,当用户对collection进行操作的时候可以有两种方式:

  • 通过BsonDocument对象模型
  • 通过自定义类型
  • 上面已经介绍过了BsonDocument对象,在这里我们也可以使用自己自定义的类型。比如,我们可以定义一个Student类型,将该类型的对象插入到collection中。

    public class Student { public ObjectId _id; public int sid; public string name; public string gender; public int age; }

    注意:当是用自定义类型的时候一定要有Id字段。

    上面两种方式都可以使用,而且各有好处,通过自定义类型的方式,可以使得collection中的文档有比较统一的模式;使用BsonDocument方式则可以支持更多的文档模式,也就是说如果一个collection中的文档拥有各种各样的模式,那么BsonDocument方式就会更灵活。

     

    插入数据

    关于数据的插入,我们可以使用collection中的"Insert()"方法。下面插入了两条记录。可以通过BsonDocument对象方式插入,也可以通过自定义类型方式插入。

    通过BsonDocument的方式,用户可以自由的定义文档的格式。例如,增加了一个“hobby”字段(Ps:不建议这么做,这样会对文档查询带来麻烦)。

    BsonDocument student1 = new BsonDocument(); student1.Add(, 10); student1.Add(, ); student1.Add(, ); student1.Add(, 26); student1.Add(, ,}); collection.Insert(student1); Student student2 = new Student(); student2.age = 27; student2.name = ; student2.gender = ; collection.Insert(student2);

     

    查询数据

    通过MongoDB driver,可以支持三种查询方法。

    QueryDocument

    这种方式的查询,类似我们在MongoDB shell中的条件查询。例如,查询年龄大于20的学生

    QueryDocument queryDocument = , ,20)); foreach (var student in collection.Find(queryDocument)) { Console.WriteLine(student); }

    当查询条件为多个的时候,例如,查询年龄大于20的男学生

    QueryDocument queryDocument = , , ,));

    Query Builder

    Query Builder是一种更简洁的方式,当通过这种方式查询的时候,我们需要使用driver中的builder来生成query。所以,要引用下面using语句

    using MongoDB.Driver.Builders;

    通过下面的语句,可以查询年龄大于20的学生

    , 20); foreach (var student in collection.Find(query)) { Console.WriteLine(student); }

    查询年龄大于20的男学生

    , , ));

    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    AI Hentai Generator

    AI Hentai Generator

    Generate AI Hentai for free.

    Hot Article

    R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
    2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island Adventure: How To Get Giant Seeds
    1 months ago By 尊渡假赌尊渡假赌尊渡假赌
    Two Point Museum: All Exhibits And Where To Find Them
    1 months ago By 尊渡假赌尊渡假赌尊渡假赌

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    How do you alter a table in MySQL using the ALTER TABLE statement? How do you alter a table in MySQL using the ALTER TABLE statement? Mar 19, 2025 pm 03:51 PM

    The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

    How do I configure SSL/TLS encryption for MySQL connections? How do I configure SSL/TLS encryption for MySQL connections? Mar 18, 2025 pm 12:01 PM

    Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

    How do you handle large datasets in MySQL? How do you handle large datasets in MySQL? Mar 21, 2025 pm 12:15 PM

    Article discusses strategies for handling large datasets in MySQL, including partitioning, sharding, indexing, and query optimization.

    What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? Mar 21, 2025 pm 06:28 PM

    Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

    How do you drop a table in MySQL using the DROP TABLE statement? How do you drop a table in MySQL using the DROP TABLE statement? Mar 19, 2025 pm 03:52 PM

    The article discusses dropping tables in MySQL using the DROP TABLE statement, emphasizing precautions and risks. It highlights that the action is irreversible without backups, detailing recovery methods and potential production environment hazards.

    How do you create indexes on JSON columns? How do you create indexes on JSON columns? Mar 21, 2025 pm 12:13 PM

    The article discusses creating indexes on JSON columns in various databases like PostgreSQL, MySQL, and MongoDB to enhance query performance. It explains the syntax and benefits of indexing specific JSON paths, and lists supported database systems.

    How do you represent relationships using foreign keys? How do you represent relationships using foreign keys? Mar 19, 2025 pm 03:48 PM

    Article discusses using foreign keys to represent relationships in databases, focusing on best practices, data integrity, and common pitfalls to avoid.

    How do I secure MySQL against common vulnerabilities (SQL injection, brute-force attacks)? How do I secure MySQL against common vulnerabilities (SQL injection, brute-force attacks)? Mar 18, 2025 pm 12:00 PM

    Article discusses securing MySQL against SQL injection and brute-force attacks using prepared statements, input validation, and strong password policies.(159 characters)

    See all articles