MongoDB 笔记2

引用包:

MongoDB.Driver

先建立数据库连接

            // 1.建立数据库连接
            var client = new MongoClient("mongodb://localhost:27017");

            // 2.获取数据库foo,如果没有则新建
            var database = client.GetDatabase("foo");

            Console.WriteLine("查第一条数据");
            // 3.获取数据集Collection,获取表bar,如果没有则新建
            var collection = database.GetCollection<BsonDocument>("bar");

简单的实现增删改查功能:

新增:

            // 定义数据
            var document = new BsonDocument
            {
                { "name", "MongoDB" },
                { "type", "Database" },
                { "count", 1 },
                { "info", new BsonDocument
                    {
                        { "x", 203 },
                        { "y", 102 }
                    }}
            };

            //var document = new MyDocument()
            //{
            //    name = "MSsql",
            //    type = "Database",
            //    count = 2,
            //    info = new MyDocumentInfo()
            //    {
            //        x = 100,
            //        y = 200
            //    }
            //};

            //同步插入数据
            collection.InsertOne(document);
            //异步插入数据
            //await collection.InsertOneAsync(document);

            // 多条数据
            //var documents = Enumerable.Range(0, 100).Select(i => new BsonDocument("counter", i));
            // 批量插入
            //collection.InsertMany(documents);
            // 批量异步插入
            //await collection.InsertManyAsync(documents);


            var count = collection.Count(new BsonDocument());  //产生一个空BsonDocument的过滤器,指对该类型的文档进行计数。

            Console.WriteLine(string.Format("已插入{0}条数据", count));
View Code

删除:

            //使用_id来筛选数据
            var filter = Builders<MyDocument>.Filter.Eq("_id", new ObjectId("5ed7121c5e3dec3ebcbd86fa"));

            //使用筛选器获取数据集合中的第一条
            //var items = collection.Find<MyDocument>(filter).FirstOrDefault();

            //筛选出数据并删除
            var result1 = collection.FindOneAndDelete(filter);

            Console.WriteLine(result1.id);

            //删除指定条件的一条数据
            var result = collection.DeleteOne<MyDocument>(u => u.counter == 6);

            Console.WriteLine(result.DeletedCount);
View Code

修改:

            //设置更新的数据
            var update = Builders<MyDocument>.Update.Set(p => p.name, "MySql");

            //更新指定条件的一条数据
            var result = collection.UpdateOne<MyDocument>(u => u.counter == 5, update);

            Console.WriteLine(result.ModifiedCount);
View Code

查询:

            var document1 = collection.Find(new BsonDocument()).FirstOrDefault();
            
            Console.WriteLine(document1.ToString());


            Console.WriteLine("查全部数据");
            //var documents = collection.Find(new BsonDocument()).ToList();     //同步
            //var document2 = collection.Find(new BsonDocument()).ToCursor();   //同步
            //await collection.Find(new BsonDocument()).ForEachAsync(d => Console.WriteLine(d));    //异步
            foreach (var item in collection.Find(new BsonDocument()).ToCursor().ToEnumerable())
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("使用筛选数据");
            //创建筛选器
            var filter = Builders<BsonDocument>.Filter.Eq("name", "MongoDB");
            //使用筛选器进行查找
            var document2 = collection.Find(filter).First();
            Console.WriteLine(document2);

            //分页查询
            var documents = collection.Find<MyDocument>(_ => true).Skip(2).Limit(2).ToList();
            foreach (var item in documents)
            {
                Console.WriteLine(item.id);
            }
View Code

参考资料:

https://www.cnblogs.com/daxiongblog/p/9319785.html

https://cloud.tencent.com/developer/article/1395086

原文地址:https://www.cnblogs.com/myfqm/p/13037844.html