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.Bson和MongoDB.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
Previous: 聚合函数
Next: C#中操作MongoDB