先在NuGet安装MongoDB.Driver
public class MongoDBOperator
{
private static string connstr= "mongodb://TestUser:123456@10.0.0.3:27017/Queen";//TestUser为登录名,123456密码, Queen为数据库名
private IMongoDatabase database;
public MongoDBOperator() {
MongoUrl url = new MongoUrl(connstr);
var client = new MongoClient(url);
database = client.GetDatabase(url.DatabaseName);
}
public void Add<T>(T t) {
var table = database.GetCollection<T>(typeof(T).Name);
table.InsertOne(t);
}
public void Delete<T>(T t) {
var table = database.GetCollection<T>(typeof(T).Name);
var builder = Builders<T>.Filter;
MongoBean entity = t as MongoBean;
var filter = builder.Eq("id", entity.id);
table.DeleteOne(filter);
}
public void Update<T>(T t)
{
var table = database.GetCollection<T>(typeof(T).Name);
MongoBean entity = t as MongoBean;
var filter = Builders<T>.Filter.Eq("id",entity.id);
table.DeleteOne(filter);
table.InsertOne(t);
}
public IQueryable<T> Query<T>() {
var table = database.GetCollection<T>(typeof(T).Name);
return table.AsQueryable();
}
}
实体类
public class Student:MongoBean
{
public string Name { get; set; }
public int Age { get; set; }
[BsonDateTimeOptions(Kind =DateTimeKind.Local)]
public DateTime CreateDate { get; set; }
}
public class MongoBean
{
[BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
public string id;
}
[BsonId(IdGenerator = typeof(StringObjectIdGenerator))]//自动生成不重复的id
[BsonDateTimeOptions(Kind =DateTimeKind.Unspecified)]//这个是为了让存进去的时间类型跟本地同步,如果不加会有时差,
对时间类型不作处理,但是在视图显示还是相差8个钟,这个不用管它,用程序拿出来的数据还是正常的
接下来就是简单添加查询,我这里用的是泛型,方便灵活
下面是测试
MongoDBOperator mongodb = new MongoDBOperator();
mongodb.Add(new Student() {Name="luo",Age=12,CreateDate=DateTime.Now });
var list= mongodb.Query<Student>().Where(o => o.Name == "luo").ToList();
var qry = from s in mongodb.Query<Student>()
where s.Name == "luo" select s;
var list2 = qry.ToList();