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);
}
}
}