MongoDB增删改查

MongoDB增删改查

十二月 29, 2022

使用MongoDB Driver

它是 MongoDB 的官方驱动程序,提供了在 .NET 中操作 MongoDB 的功能。
在Nuget包管理器中下载即可,其他编译器找到相关链接库部分就行。

此下示例均采用同步模式,并只更新一个。多个操作时将One改成Many。

已 查找为例,实现异步。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//写在Mongo类里面的异步函数
public async void FindAsync() {
FilterDefinition<BsonDocument> filterDefinition = Builders<BsonDocument>.Filter.Eq("HP", 50);

var documents = await collection.FindAsync(filterDefinition);
foreach (var document in documents.ToEnumerable()) {
Console.WriteLine($"HP: {document["HP"]}, atk: {document["atk"]}");
}
}

//Main函数执行
Mongo mongo = new Mongo();
mongo.FindAsync();

Connect Database

1
2
MongoClient client = new MongoClient("mongodb://127.0.0.1:27017");
IMongoDatabase mongo = client.GetDatabase("DatabaseName");

Insert Data

1
2
3
4
5
6
7
8
9
10
//获得集合
IMongoCollection<BsonDocument> collection = mongo.GetCollection<BsonDocument>("player");
BsonDocument filter = new BsonDocument {
//abc是字符串string
{ "id","12345"},
{"data",abc },
{ "ip","127.0.0.1"}
};
collection.InsertOne(filter);

Delete Data

1
2
3
4
5
//寻找相关数据
FilterDefinition<BsonDocument> file = Builders<BsonDocument>.Filter.Eq("id", "12345");

collection.DeleteOne(file);//一个
collection.DeleteMany(file);//全部

Update Data

1
2
3
4
5
6
7
8
9
// 创建筛选器定义
FilterDefinition<BsonDocument> filter = Builders<BsonDocument>.Filter.Eq("name", "John");

// 创建更新器定义
UpdateDefinition<BsonDocument> update = Builders<BsonDocument>.Update.Set("age", 30).Set("ip", "127.0.0.1");

// 更新集合中的文档
UpdateResult result = await collection.UpdateManyAsync(filter, update);
collection.UpdateMany(filter, update);

Check Data

1
2
3
4
5
6
7
8
9
10
11
12
13
//选择条件
FilterDefinition<BsonDocument> filterDefinition = Builders<BsonDocument>.Filter.Where(
x => x["_id"] == id && x["pw"] == pw);
FilterDefinition<BsonDocument> file = Builders<BsonDocument>.Filter.Eq("id", "12345");
//寻找全部
List<BsonDocument> list = collection.Find(file).ToList();
//打印全部
foreach (var doc in list) {
Console.WriteLine(doc);
}
//转化为相关变量
list[0]["data"].ToString()

查找相关条件的数量

1
2
FilterDefinition<BsonDocument> file = Builders<BsonDocument>.Filter.Eq("id", "12345");
int count=collection.CountDocuments(findDefinition)

更新整个实体类

1
2
FilterDefinition<BsonDocument> file = Builders<BsonDocument>.Filter.Eq("id", "12345");
collection.ReplaceOne(filterDefinition, app);//app为要更新的文档