MongoDB C# Driver 使用示例 (2.2)

黄舟
发布: 2017-02-28 11:48:32
原创
1420 人浏览过

项目update到了mongoDB C# driver 2.2 , 发现从1.9到2.0的变化还是很大的,整合了一些常用的操作附加demo代码:

  class Program
    {
        const string CollectionName = "video";
        static void Main(string[] args)
        {
            // remove the demo collection then recreate later
            db.GetCollection<Video>(CollectionName).Database.DropCollection(CollectionName);


            var videos = new List<Video>
            {
                new Video { Title="The Perfect Developer", 
                            Category="SciFi", Minutes=118 },
                new Video { Title="Lost In Frankfurt am Main", 
                            Category="Horror", Minutes=122 }, 
                new Video { Title="The Infinite Standup", 
                            Category="Horror", Minutes=341 } 
            };


            Console.WriteLine("Insert Videos ...");


            db.GetCollection<Video>(CollectionName).InsertMany(videos);


            Console.WriteLine("[After insert] All Videos : ");
            var all = db.GetCollection<Video>(CollectionName).Find(x=>x.Title != string.Empty).ToList();
            foreach (var v in all)
            {
                Console.WriteLine(v);
            }


            Console.WriteLine("Group By...");


            var groupby = db.GetCollection<Video>(CollectionName).Aggregate()
                    .Group(x => x.Category, g => new {Name = g.Key, Count = g.Count(), TotalMinutes = g.Sum(x => x.Minutes)})
                    .ToList();
            foreach (var v in groupby)
            {
                Console.WriteLine(v.Name + "," + v.Count + "," + v.TotalMinutes);
            }




            Console.WriteLine("Updating One [Title = The Perfect Developer]...");


            // updating title with "The perfect developer" video&#39;s &#39;title&#39; and &#39;minute&#39;
            db.GetCollection<Video>(CollectionName).FindOneAndUpdate(x=>x.Title == "The Perfect Developer",
                    Builders<Video>.Update.Set(x=> x.Title , "A Perfect Developer [updated]")
                                          .AddToSet(x => x.Comments, "good video!")
                                          .AddToSet(x => x.Comments, "not bad"));


            Console.WriteLine("[After Updating One] All Videos : ");
            all = db.GetCollection<Video>(CollectionName).Find(x => x.Title != string.Empty).ToList();
            foreach (var v in all)
            {
                Console.WriteLine(v);
            }


            Console.WriteLine("Deleting One... [Minutes = 122]");
            db.GetCollection<Video>(CollectionName).DeleteOne(x => x.Minutes == 122);
            Console.WriteLine("[After Deleting One] All Videos : ");
            all = db.GetCollection<Video>(CollectionName).Find(x => x.Title != string.Empty).ToList();
            foreach (var v in all)
            {
                Console.WriteLine(v);
            }


            Console.Read();
        }


        private static IMongoDatabase db
        {
            get
            {
                var url = new MongoUrl(ConfigurationSettings.AppSettings["mongoUrl"]);
                var client = new MongoClient(url);
                return client.GetDatabase(url.DatabaseName);
            }
        }
    }


    [BsonIgnoreExtraElements]
    public class Video
    {
        public Video()
        {
            Comments = new List<string>();
        }


        [BsonId]
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }


        public string Title { get; set; }
        public string Category { get; set; }
        public int Minutes { get; set; }


        public IList<string> Comments { get; set; }


        public override string ToString()
        {
            return string.Format("{0} - {1} - {2}", Title, Category, Minutes);
        }
    }
登录后复制

对于mongoDB C# driver从1.9到2.0的更新,简化了数据库的连接方式,简化了Find,Update,Delete的接口,group by和projection操作也更流畅了。
在Builders中整合了 update, filter, projection, 和sort,功能的内聚性更强了,找function很方便。
 

 以上就是MongoDB C# Driver 使用示例 (2.2)的内容,更多相关内容请关注PHP中文网(www.php.cn)!


相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板