MongoDB 是一种功能强大且灵活的 NoSQL 数据库,适用于处理大规模的半结构化数据和高并发场景。它不依赖于固定的表结构和关系模型,而是以文档的形式存储数据,每个文档可以包含不同的字段和数据类型。
mongod
命令。在项目中添加 MongoDB 的 NuGet 包:
dotnet add package MongoDB.Driver
MongoDB 的连接字符串格式如下:
mongodb://<username>:<password>@<host>:<port>/<database>?authSource=<authDatabase>
// mongodb://localhost:27017/mydatabase
using MongoDB.Bson;
using MongoDB.Driver;
var client = new MongoClient("mongodb://127.0.0.1:27017");
// 获取数据库实例
var database = client.GetDatabase("netSharebase");
// 获取集合实例
var collection = database.GetCollection<BsonDocument>("users");
Console.WriteLine("连接成功!");
var document = new BsonDocument
{
{ "name", "Alice" },
{ "age", 25 },
{ "email", "alice@example.com" }
};
collection.InsertOne(document);
var filter = Builders<BsonDocument>.Filter.Eq("name", "Alice");
var result = collection.Find(filter).FirstOrDefault();
if (result != null)
{
Console.WriteLine($"查询结果: {result}");
}
else
{
Console.WriteLine("未找到数据!");
}
var update = Builders<BsonDocument>.Update.Set("age", 26);
collection.UpdateOne(filter, update);
Console.WriteLine("更新成功!");
collection.DeleteOne(filter);
Console.WriteLine("删除成功!");
public class User
{
public ObjectId Id { get; set; } // MongoDB 默认主键类型
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
var user = new User
{
Name = "Bob",
Age = 30,
Email = "bob@example.com"
};
var userCollection = database.GetCollection<User>("users");
userCollection.InsertOne(user);
Console.WriteLine("插入实体成功!");
var userFilter = Builders<User>.Filter.Eq(u => u.Name, "Bob");
var userResult = userCollection.Find(userFilter).FirstOrDefault();
if (userResult != null)
{
Console.WriteLine($"查询结果: {userResult.Name}, {userResult.Age}, {userResult.Email}");
}
else
{
Console.WriteLine("未找到用户!");
}
创建索引以提高查询性能:
var indexKeys = Builders<User>.IndexKeys.Ascending(u => u.Name);
var indexOptions = new CreateIndexOptions { Unique = true };
userCollection.Indexes.CreateOne(new CreateIndexModel<User>(indexKeys, indexOptions));
Console.WriteLine("索引创建成功!");
执行复杂的聚合查询:
var pipeline = new AggregatePipelineBuilder<User>()
.Match(u => u.Age > 25)
.Group(g => g.Key("emailDomain", x => x.Email.Split('@')[1]), g => g.Count());
var results = userCollection.Aggregate(pipeline).ToList();
foreach (var result in results)
{
Console.WriteLine($"{result._id}: {result.count}");
}
本文详细介绍了如何在 .NET 平台上使用 MongoDB 进行基本操作,包括连接数据库、插入/查询/更新/删除数据以及高级功能如索引和聚合操作。通过官方驱动 MongoDB.Driver
,可以轻松实现与 MongoDB 的交互,满足应用对灵活数据存储的需求。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有