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);
}
}
}