In this section, we will explore how to use MongoDB with C#. We will cover the following topics:
- Setting up the environment
- Connecting to MongoDB
- Performing CRUD operations
- Practical exercises
- Setting up the Environment
Before we start coding, we need to set up our development environment.
Prerequisites
- Visual Studio or Visual Studio Code
- .NET SDK
- MongoDB server (local or cloud-based like MongoDB Atlas)
Installing the MongoDB Driver for C#
To interact with MongoDB from a C# application, we need to install the MongoDB.Driver package. You can do this using the NuGet Package Manager in Visual Studio or by running the following command in the terminal:
- Connecting to MongoDB
Let's start by creating a simple C# console application that connects to a MongoDB database.
Example Code
using MongoDB.Bson; using MongoDB.Driver; using System; namespace MongoDBWithCSharp { class Program { static void Main(string[] args) { // Connection string to MongoDB server var connectionString = "mongodb://localhost:27017"; // Create a MongoClient object var client = new MongoClient(connectionString); // Get the database (create if not exists) var database = client.GetDatabase("testdb"); // Get the collection (create if not exists) var collection = database.GetCollection<BsonDocument>("testcollection"); Console.WriteLine("Connected to MongoDB!"); } } }
Explanation
- MongoClient: This class is used to connect to a MongoDB server.
- GetDatabase: This method retrieves a database. If the database does not exist, it will be created.
- GetCollection: This method retrieves a collection from the database. If the collection does not exist, it will be created.
- Performing CRUD Operations
Creating Documents
To insert a document into a MongoDB collection, we use the InsertOne
method.
Example Code
var document = new BsonDocument { { "name", "John Doe" }, { "age", 30 }, { "email", "[email protected]" } }; collection.InsertOne(document); Console.WriteLine("Document inserted!");
Reading Documents
To read documents from a MongoDB collection, we use the Find
method.
Example Code
var filter = Builders<BsonDocument>.Filter.Eq("name", "John Doe"); var result = collection.Find(filter).FirstOrDefault(); if (result != null) { Console.WriteLine(result.ToString()); } else { Console.WriteLine("No document found!"); }
Updating Documents
To update a document, we use the UpdateOne
method.
Example Code
var filter = Builders<BsonDocument>.Filter.Eq("name", "John Doe"); var update = Builders<BsonDocument>.Update.Set("age", 31); collection.UpdateOne(filter, update); Console.WriteLine("Document updated!");
Deleting Documents
To delete a document, we use the DeleteOne
method.
Example Code
var filter = Builders<BsonDocument>.Filter.Eq("name", "John Doe"); collection.DeleteOne(filter); Console.WriteLine("Document deleted!");
- Practical Exercises
Exercise 1: Insert Multiple Documents
Task: Write a program to insert multiple documents into a MongoDB collection.
Solution:
var documents = new List<BsonDocument> { new BsonDocument { { "name", "Alice" }, { "age", 25 }, { "email", "[email protected]" } }, new BsonDocument { { "name", "Bob" }, { "age", 28 }, { "email", "[email protected]" } } }; collection.InsertMany(documents); Console.WriteLine("Multiple documents inserted!");
Exercise 2: Find Documents with a Specific Condition
Task: Write a program to find all documents where the age is greater than 25.
Solution:
var filter = Builders<BsonDocument>.Filter.Gt("age", 25); var results = collection.Find(filter).ToList(); foreach (var doc in results) { Console.WriteLine(doc.ToString()); }
Exercise 3: Update Multiple Documents
Task: Write a program to update the email of all documents where the name is "Alice".
Solution:
var filter = Builders<BsonDocument>.Filter.Eq("name", "Alice"); var update = Builders<BsonDocument>.Update.Set("email", "[email protected]"); collection.UpdateMany(filter, update); Console.WriteLine("Multiple documents updated!");
Exercise 4: Delete Documents with a Specific Condition
Task: Write a program to delete all documents where the age is less than 30.
Solution:
var filter = Builders<BsonDocument>.Filter.Lt("age", 30); collection.DeleteMany(filter); Console.WriteLine("Multiple documents deleted!");
Conclusion
In this section, we learned how to set up a C# environment to work with MongoDB, connect to a MongoDB database, and perform CRUD operations. We also provided practical exercises to reinforce the concepts. In the next module, we will explore real-world applications of MongoDB with C#.