mongodb for Linq(T)操作和Json操作BsonDocument
using MongoDB.Driver;
using MongoDB.Driver.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace Core.DBContext
{
public class MongoDBbase<T> where T : class, new()
{
MongoClient client;
IMongoDatabase database;
public IMongoCollection<T> collection;
public MongoDBbase()
{
//var client = new MongoClient("mongodb://host:27017,host2:27017/?replicaSet=rs0");
client = new MongoClient("mongodb://39.96.34.12:27017");
database = client.GetDatabase("test");
Type type = typeof(T);
collection = database.GetCollection<T>(type.Name.ToLower());
}
public void traTest()
{
var session = client.StartSession();
try
{
var database = session.Client.GetDatabase("test");
session.StartTransaction(new TransactionOptions(
readConcern: ReadConcern.Snapshot,
writeConcern: WriteConcern.WMajority));
//IMongoCollection<Userinfo> collection = database.GetCollection<Userinfo>("userinfo");
// 切记,使用事务的时候,记得要给需要事务的指令里面吧当前会话的对象传入进去
// 因为事务的完整性是通过sessionid来做的
//collection.InsertOne(session, daqiao);
//throw new Exception("取消事务");
session.CommitTransaction();
}
catch (Exception ex)
{
//回滚
session.AbortTransaction();
}
}
public void DropDatabase()
{
client.DropDatabase("test");
}
public void InsertOne(T model)
{
collection.InsertOne(model);
}
public void InsertMany(params T[] modes)
{
collection.InsertMany(modes);
}
public IMongoQueryable<T> Select()
{
return collection.AsQueryable<T>();
}
public IMongoQueryable<T> Select(int pageIndex, int pageSize)
{
return collection.AsQueryable<T>().Skip(pageSize * (pageIndex - 1)).Take(pageSize);
}
public IMongoQueryable<T> Select(Expression<Func<T, bool>> predicate, Expression<Func<T, object>> keySelector, int pageIndex, int pageSize)
{
return collection.AsQueryable<T>().Where(predicate).OrderBy(keySelector).Skip(pageSize * (pageIndex - 1)).Take(pageSize);
}
public void UpdateMany(Expression<Func<T, bool>> filter, UpdateDefinition<T> update)
{
collection.UpdateMany(filter, update);
}
public void UpdateOne(Expression<Func<T, bool>> filter, T update)
{
collection.ReplaceOne(filter, update);
}
public void DeleteMany(Expression<Func<T, bool>> filter)
{
collection.DeleteMany(filter);
}
}
}
-----------------------------json操作 BsonDocument--------------------------
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Text;
namespace Zhaoxi.MongodbApp
{
public class JsonOperation
{
public static void Show()
{
var client = new MongoClient("mongodb://192.168.1.14:27017");
var database = client.GetDatabase("test");
var document = BsonDocument.Parse("{ a: 1, b: [{ c: 1 }],c: 'ff'}");
var document1 = BsonDocument.Parse("{ a: 6666}");
database.GetCollection<BsonDocument>("userinfo").InsertOne(document1);
database.GetCollection<BsonDocument>("userinfo").InsertOne(document);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!