C#中使用Mongodb

C#中使用Mongodb

创建一个控制台项目,然后在nuget中安装mongodb驱动。

准备测试数据

db.books.insert([{title:'aadsfdsf'}])
db.books.insert([{title:'FoxDevelop欢迎大家'}])
db.books.insert([{title:'mongodb入门课程'}])Code language: CSS (css)

C#代码示例

using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MongoDBDemo
{
    class Program
    {
        //连接地址
        private static string conn = "mongodb://127.0.0.1:27017";
        //数据库名称
        private static string dbName = "test";
        //集合名称
        private static string colName = "books";
        //连接服务端
        static MongoClient client = new MongoClient(conn);
        //获取指定数据库
        static IMongoDatabase db = client.GetDatabase(dbName);

        static void Main(string[] args)
        {
            IMongoCollection<Book> collection = db.GetCollection<Book>("books");
            var all = collection.Find(m=>true).ToList();
            Console.ReadKey();
        }
    }

    public class Book
    {
        public ObjectId _id { get; set; }
        public string title { get; set; }
    }
}Code language: JavaScript (javascript)

补充说明

  • NuGet 安装的包名为 MongoDB.Driver,安装后自动引入 MongoDB.BsonMongoDB.Driver 两个引用
  • MongoClient 是整个应用生命周期内应该复用的对象,不要每次操作都 new 一个新的
  • GetCollection<T>() 中的泛型类型 T 对应集合中的文档结构,字段名要和 MongoDB 中的键名一致(区分大小写)
  • ObjectId 类型对应 MongoDB 中的 _id 字段,需要引用 MongoDB.Bson 命名空间
  • Find(m=>true) 表示查询所有文档,等价于 find({});也可以写 Find(new BsonDocument()) 不指定条件
  • ToList() 会把结果一次性加载到内存中,数据量大时用 ToCursor() 或分页遍历
  • 连接字符串中可以指定多个节点实现副本集连接:mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=rs0
  • 如果 MongoDB 设置了鉴权,连接字符串格式为:mongodb://username:password@127.0.0.1:27017/?authSource=admin

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注