C# 操作mongoDB
一 使用NuGet安装MongoDB.Driver
二 添加
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MongoDBTestDemo
{
public class ModelInfo
{
public MongoDB.Bson.ObjectId Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}
// 添加
ModelInfo model = new ModelInfo();
model.Name = textBox2.Text;
model.Age = int.Parse(textBox3.Text);
// 创建MongoDB客户端实例,连接数据库
MongoClient mongoClient = new MongoClient("mongodb://localhost:27017");
// 获取数据库
IMongoDatabase mydb = mongoClient.GetDatabase("mydb");
// 获取集合
var collection = mydb.GetCollection<ModelInfo>("userinfo");
// 插入实例文档
collection.InsertOne(model);
MessageBox.Show("添加成功!");
三 查询
private void Query()
{
MongoClient mongoClient = new MongoClient("mongodb://localhost:27017");
IMongoDatabase mydb = mongoClient.GetDatabase("mydb");
var collection = mydb.GetCollection<ModelInfo>("userinfo");
// 查询
var list = collection.Find(x=>x.Name.Contains("")).SortByDescending(x=>x.Id).Skip(0).Limit(20).ToList();
dataGridView1.DataSource = list;
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(1,null);
if(frm.ShowDialog() == DialogResult.OK)
{
Query();
}
}
private void Query()
{
MongoClient mongoClient = new MongoClient("mongodb://localhost:27017");
IMongoDatabase mydb = mongoClient.GetDatabase("mydb");
var collection = mydb.GetCollection<ModelInfo>("userinfo");
var list = collection.Find(x=>x.Name.Contains("")).SortByDescending(x=>x.Id).Skip(0).Limit(20).ToList();
dataGridView1.DataSource = list;
}
修改
// 修改
model.Id=MongoDB.Bson.ObjectId.Parse(textBox1.Text);
var doc = collection.Find(x=>x.Id == model.Id).Skip(0).Limit(1).ToList();
if(!doc.Any())
{
return;
}
var usdataBuilder = Builders<ModelInfo>.Update;
var update = usdataBuilder.Set(x=>x.Name, model.Name).Set(x=>x.Age,model.Age);
UpdateResult result= collection.UpdateOne(x=>x.Id==model.Id,update);
if(result.ModifiedCount>0)
{
MessageBox.Show("修改成功!");
this.DialogResult = DialogResult.OK;
}
else
{
MessageBox.Show("修改失败!");
}
DataGridViewRow dr = this.dataGridView1.CurrentRow;
if(dr==null)
{
MessageBox.Show("请选中要修改的数据");
return;
}
ModelInfo modelInfo = new ModelInfo();
modelInfo.Id = MongoDB.Bson.ObjectId.Parse(dr.Cells["Id"].Value.ToString());
modelInfo.Name = dr.Cells["Name"].Value.ToString();
modelInfo.Age = int.Parse(dr.Cells["Age"].Value.ToString());
Form2 frm = new Form2(2,modelInfo);
if (frm.ShowDialog() == DialogResult.OK)
{
Query();
}
删除
private void button4_Click(object sender, EventArgs e)
{
DataGridViewRow dr = this.dataGridView1.CurrentRow;
if (dr == null)
{
MessageBox.Show("请选中要删除的数据");
return;
}
MongoClient mongoClient = new MongoClient("mongodb://localhost:27017");
IMongoDatabase mydb = mongoClient.GetDatabase("mydb");
var collection = mydb.GetCollection<ModelInfo>("userinfo");
MongoDB.Bson.ObjectId id = MongoDB.Bson.ObjectId.Parse(dr.Cells["Id"].Value.ToString());
DeleteResult result = collection.DeleteOne(x=>x.Id ==id);
if (result.DeletedCount>0)
{
Query();
}
}
完整代码
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MongoDBTestDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(1,null);
if(frm.ShowDialog() == DialogResult.OK)
{
Query();
}
}
private void button3_Click(object sender, EventArgs e)
{
Query();
}
private void Query()
{
MongoClient mongoClient = new MongoClient("mongodb://localhost:27017");
IMongoDatabase mydb = mongoClient.GetDatabase("mydb");
var collection = mydb.GetCollection<ModelInfo>("userinfo");
var list = collection.Find(x=>x.Name.Contains("")).SortByDescending(x=>x.Id).Skip(0).Limit(20).ToList();
dataGridView1.DataSource = list;
}
private void button2_Click(object sender, EventArgs e)
{
DataGridViewRow dr = this.dataGridView1.CurrentRow;
if(dr==null)
{
MessageBox.Show("请选中要修改的数据");
return;
}
ModelInfo modelInfo = new ModelInfo();
modelInfo.Id = MongoDB.Bson.ObjectId.Parse(dr.Cells["Id"].Value.ToString());
modelInfo.Name = dr.Cells["Name"].Value.ToString();
modelInfo.Age = int.Parse(dr.Cells["Age"].Value.ToString());
Form2 frm = new Form2(2,modelInfo);
if (frm.ShowDialog() == DialogResult.OK)
{
Query();
}
}
private void button4_Click(object sender, EventArgs e)
{
DataGridViewRow dr = this.dataGridView1.CurrentRow;
if (dr == null)
{
MessageBox.Show("请选中要删除的数据");
return;
}
MongoClient mongoClient = new MongoClient("mongodb://localhost:27017");
IMongoDatabase mydb = mongoClient.GetDatabase("mydb");
var collection = mydb.GetCollection<ModelInfo>("userinfo");
MongoDB.Bson.ObjectId id = MongoDB.Bson.ObjectId.Parse(dr.Cells["Id"].Value.ToString());
DeleteResult result = collection.DeleteOne(x=>x.Id ==id);
if (result.DeletedCount>0)
{
Query();
}
}
}
}
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MongoDBTestDemo
{
public partial class Form2 : Form
{
int _type = 0;
public Form2(int type,ModelInfo modelInfo)
{
InitializeComponent();
_type = type;
if(type ==2)
{
if(modelInfo != null)
{
textBox1.Text = modelInfo.Id.ToString();
textBox2.Text = modelInfo.Name;
textBox3.Text = modelInfo.Age.ToString();
}
button1.Text = "修改";
}
}
private void button1_Click(object sender, EventArgs e)
{
ModelInfo model = new ModelInfo();
model.Name = textBox2.Text;
model.Age = int.Parse(textBox3.Text);
MongoClient mongoClient = new MongoClient("mongodb://localhost:27017");
IMongoDatabase mydb = mongoClient.GetDatabase("mydb");
var collection = mydb.GetCollection<ModelInfo>("userinfo");
if (_type == 1)
{
// 添加
collection.InsertOne(model);
MessageBox.Show("添加成功!");
this.DialogResult = DialogResult.OK;
}
else
{
// 修改
model.Id=MongoDB.Bson.ObjectId.Parse(textBox1.Text);
var doc = collection.Find(x=>x.Id == model.Id).Skip(0).Limit(1).ToList();
if(!doc.Any())
{
return;
}
var usdataBuilder = Builders<ModelInfo>.Update;
var update = usdataBuilder.Set(x=>x.Name, model.Name).Set(x=>x.Age,model.Age);
UpdateResult result= collection.UpdateOne(x=>x.Id==model.Id,update);
if(result.ModifiedCount>0)
{
MessageBox.Show("修改成功!");
this.DialogResult = DialogResult.OK;
}
else
{
MessageBox.Show("修改失败!");
}
}
}
}
}