分享

MongoDB试水

 MikeDoc 2011-05-28

最近在博客园经常看到关于mongodb的文章,闲暇时间自己也适用了一下,发现在某些方面用起来相当的简单,只要写一个类,再定义模型对象,其他的只要调用就OK了。

比如添加数据:

1 public static void Add<TModel>(TModel model)
2 {
3 var doc = BsonExtensionMethods.ToBsonDocument(model);
4 MongoServer server = MongoServer.Create(MongoConfig.ConnectionString);
5 MongoDatabase database = server.GetDatabase(MongoConfig.DataBase);
6 using (server.RequestStart(database))
7 {
8 var collection = database.GetCollection<TModel>(typeof(TModel).Name);
9 collection.Insert(doc);
10 }
11 }

调用示例:

1 User user = new User();
2 user.Password = "1234566";
3 user.UserName = "hao";
4 user.RegisterTime = DateTime.Now;
5 MongoInstance.Add<User>(user);

更新数据:

1 public static void Update<TModel>(TModel model, object id)
2 {
3 BsonDocument doc = BsonExtensionMethods.ToBsonDocument(model);
4 IList<BsonElement> elements = new List<BsonElement>();
5 foreach (var item in doc.Elements)
6 {
7 if (item.Value.IsBsonNull)
8 {
9 elements.Add(item);
10 }
11 }
12 foreach (var el in elements)
13 {
14 doc.RemoveElement(el);
15 }
16 MongoServer server = MongoServer.Create(MongoConfig.ConnectionString);
17 MongoDatabase database = server.GetDatabase(MongoConfig.DataBase);
18 using (server.RequestStart(database))
19 {
20 var collection = database.GetCollection(typeof(TModel).Name);
21 var query = new QueryDocument { { "_id", new BsonObjectId(id.ToString()) } };
22 var update = new UpdateDocument(doc);
23 collection.Update(query, update);
24 }
25 }

调用示例(不能设置Id):

1 MongoInstance.Update<User>(user, "4ddb06b73a0c080f4ccb6df5");

删除数据:

1 public static void Delete<TModel>(object id)
2 {
3 MongoServer server = MongoServer.Create(MongoConfig.ConnectionString);
4 MongoDatabase database = server.GetDatabase(MongoConfig.DataBase);
5 using (server.RequestStart(database))
6 {
7 var collection = database.GetCollection(typeof(TModel).Name);
8 var query = new QueryDocument("_id", new BsonObjectId(id.ToString()));
9 collection.Remove(query);
10 }
11 }

调用示例:

MongoInstance.Delete<User>("4ddb06b73a0c080f4ccb6df5");

根据Id获得对象数据:

1 public static TModel GetById<TModel>(object id)
2 {
3 MongoServer server = MongoServer.Create(MongoConfig.ConnectionString);
4 MongoDatabase database = server.GetDatabase(MongoConfig.DataBase);
5 using (server.RequestStart(database))
6 {
7 var query = new QueryDocument("_id", new BsonObjectId(id.ToString()));
8 var collection = database.GetCollection<TModel>(typeof(TModel).Name);
9 var m = collection.FindOne(query);
10 if (m != null)
11 return m;
12 }
13 return default(TModel);
14 }

调用示例:

1 MongoInstance.GetById<User>("4ddb06ac3a0c080f4ccb6df4");

获得全部数据:

1 public static IList<TModel> GetAll<TModel>()
2 {
3 MongoServer server = MongoServer.Create(MongoConfig.ConnectionString);
4 MongoDatabase database = server.GetDatabase(MongoConfig.DataBase);
5 using (server.RequestStart(database))
6 {
7 var employees = database.GetCollection<TModel>(typeof(TModel).Name);
8 return employees.FindAll().ToList();
9 }
10 }

调用示例:

MongoInstance.GetAll<User>();

分页:

1 public static IList<TModel> GetDataPaging<TModel>(int pageIndex, out int totalPage, int pageSize = 20)
2 {
3 totalPage = 0;
4 MongoServer server = MongoServer.Create(MongoConfig.ConnectionString);
5 MongoDatabase database = server.GetDatabase(MongoConfig.DataBase);
6 using (server.RequestStart(database))
7 {
8 var collection = database.GetCollection<TModel>(typeof(TModel).Name);
9 var result = collection.FindAll();
10 result.Skip = (pageIndex - 1) * pageSize;
11 result.Limit = pageSize;
12 return result.ToList();
13 }
14 }

调用示例:

1 MongoInstance.GetDataPaging<User>(2, out tPage, 2);
就像这样,外部只需定义类似于User这样的Model就可以了,这是非常的方便,大虾们看看,指教一下。
分类: Asp.Net

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多