由于MongoDB的相关内容实在是太难查了,拼拼凑凑的自己统计一些吧。
首先是关于MongoDB的引用,这两个是主要的引用其他的看自己需求去增加
using MongoDB.Driver;
using MongoDB.Bson;
下面直接代码吧,说多了都无用,BsonDocument里面的基本上都是由MongoDB里面的语句转换过来的。
//MongoDB数据库连接字符串,这个哪里都能查到
static string momgoctr = "mongodb://user:password@ip/Database?replicaSet=mySet&authSource=admin";
[Obsolete]
static void Main(string[] args)
{
string strCon = momgoctr;
var mongoUrl = new MongoUrlBuilder(strCon);
// 获取数据库名称
string databaseName = mongoUrl.DatabaseName;
var client = new MongoClient(mongoUrl.ToMongoUrl());
// 定义要查询的集合名称
const string collectionName = "表名";//
var database = client.GetDatabase(databaseName);
//确定访问哪张表Pet是实体类可变的
var collection = database.GetCollection<BsonDocument>(collectionName);
var pipeline = new BsonDocument[]
{
//数据展开
new BsonDocument("$unwind", new BsonDocument
{
{ "字段", "$值" }, // 连接的集合名称
{ "preserveNullAndEmptyArrays", true }
}),
// 投影出返回结果需要的字段
new BsonDocument("$project", new BsonDocument
{
{ "字段1", "$数值1" },
{ "字段2", "$数值2" },
{ "字段3", "$数值3" },
{ "字段4", "$数值4" }
}),
new BsonDocument("$match", new BsonDocument
{
//可以写多个条件
{ "$条件,大于等于那一类的", new BsonArray{ new BsonDocument{ "","" } },
}),
new BsonDocument("$sort",new BsonDocument
{
{ "字段1" , 1},
{ "字段2" , -1}
})
};
//这个地方转换成自己的model就可以了
var result = collection.Aggregate<TModel>(pipeline).ToList();
Console.ReadKey();
}
其他的就不一 一举例基本上MongoDB语句在这里面都可以直接写,就是括号套起来麻烦点,需要注意的就是查出来数据的格式。这种写法对于需要聚合查询的很契合,但如果是单表查询,推荐我另一个文章里面的方式,非常好用。