C# MongoDB驱动——增删改查

 

 

 

using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using TestForm.model;

namespace TestForm
{
    public partial class Form1 : Form
    {
        MongoDatabase _db = null;
        MongoCollection collection = null;
        public Form1()
        {
            InitializeComponent();

            _db = new MongoClient("mongodb://127.0.0.1:27017").GetServer().GetDatabase("test");
            collection = _db.GetCollection<User>("users");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            User user = new User()
            {
                UserId = 1,
                Name = "开心9",
                Age = 20,
                Sex = true,
                ClassId = 7,
                DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
            };
            try
            {

                collection.Insert(user);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            List<User> list = new List<User>()
            {
                new User(){ UserId = 2,Name = "开心2",Age = 22,Sex = false,ClassId = 2,DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
                new User(){ UserId = 3,Name = "开心3",Age = 23,Sex = true,ClassId = 3,DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
                new User(){ UserId = 4,Name = "开心4",Age = 24,Sex = false,ClassId = 4,DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
                new User(){ UserId = 5,Name = "开心5",Age = 25,Sex = true,ClassId = 5,DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
                new User(){ UserId = 6,Name = "开心6",Age = 26,Sex = false,ClassId = 6,DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
                new User(){ UserId = 7,Name = "开心7",Age = 27,Sex = true,ClassId = 7,DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
                new User(){ UserId = 8,Name = "开心8",Age = 28,Sex = false,ClassId = 8,DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
            };

            try
            {
                collection.InsertBatch(list);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        private void button3_Click(object sender, EventArgs e)
        {
            //IMongoQuery query = Query.And(Query.GTE("u", 4), Query.EQ("cid", 8));
            //List<User> list = collection.FindAs<User>(query).ToList();
            //foreach (var item in list)
            //{
            //    textBox1.Text += item.Id + "|" + item.Name;
            //}        


            //聚合函数

            //BsonDocument query = new BsonDocument();
            //query.Add(new BsonDocument { { "s", true } });
            //query.Add(new BsonDocument { { "cid", new BsonDocument { { "$gt", 1 } } } });

            //BsonDocument keys = new BsonDocument();
            //keys.Add(new BsonDocument { { "_id", "$cid" } });

            //BsonDocument fileds = new BsonDocument();
            //fileds.Add(new BsonDocument { { "cidCount", new BsonDocument { { "$sum", 1 } } }, { "ageSum", new BsonDocument { { "$sum", "$a" } } } });

            //BsonDocument match = new BsonDocument("$match", query);
            //BsonDocument group = new BsonDocument("$group", new BsonDocument { keys, fileds });
            //BsonDocument sort = new BsonDocument("$sort", new BsonDocument("_id", -1));

            //AggregateArgs ag = new AggregateArgs
            //{
            //    Pipeline = new BsonDocument[] { 
            //    match,
            //    group,
            //    sort
            //    }
            //};
        
            //var data = collection.Aggregate(ag);
            //var result = data.Select(r => new Result()
            //{
            //    Id = Convert.ToInt32(r["_id"]),
            //    CidCount = Convert.ToInt32(r["cidCount"]),
            //    SumCount = Convert.ToInt32(r["ageSum"])
            //});

            //foreach (var item in result)
            //{
            //    textBox1.Text += item.Id + "|"+item.CidCount+"|"+item.SumCount+"qqqqqqqqqqqqqqqqqqqqq";
            //}




            //聚合函数

            BsonDocument query = new BsonDocument();
            query.Add(new BsonDocument("s", true));
            query.Add(new BsonDocument("cid", new BsonDocument { { "$gt", 1 }, { "$lte", 10 } }));

            BsonDocument keys = new BsonDocument();
            keys.Add(new BsonDocument("_id", "$cid"));

            BsonDocument fileds = new BsonDocument();
            fileds.Add(new BsonDocument("cidCount", new BsonDocument("$sum", 1)));
            fileds.Add(new BsonDocument("ageSum", new BsonDocument("$sum", "$a")));

            BsonDocument match = new BsonDocument("$match", query);
            BsonDocument group = new BsonDocument("$group", new BsonDocument { keys, fileds });
            BsonDocument sort = new BsonDocument("$sort", new BsonDocument("_id", -1));

            AggregateArgs ag = new AggregateArgs
            {
                Pipeline = new BsonDocument[] { 
                match,
                group,
                sort
                }
            };

            var data = collection.Aggregate(ag);
            var result = data.Select(r => new Result()
            {
                Id = Convert.ToInt32(r["_id"]),
                CidCount = Convert.ToInt32(r["cidCount"]),
                SumCount = Convert.ToInt32(r["ageSum"])
            });

            foreach (var item in result)
            {
                textBox1.Text += item.Id + "|" + item.CidCount + "|" + item.SumCount + "qqqqqqqqqqqqqqqqqqqqq";
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            collection.RemoveAll();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            IMongoQuery query = Query.And(Query.EQ("s", false));
            var name = collection.FindOneAs<User>(query).Name;
            UpdateBuilder up = new UpdateBuilder();
            // up.Inc("a", 5);
            // up.Mul("a", 5);
            up.Set("n", name + "修改的");
            collection.Update(query, up);
        }


    }
}

 

posted on 2017-06-22 12:24  奔游浪子  阅读(167)  评论(0)    收藏  举报

导航