1. MongoDB in C#
By Rich Helton
January 01, 2015
Buy “Mastering NserviceBus with
Persistence”
2. What is MongoDB
MongoDB is a cross-platform document-
oriented database.
http://en.wikipedia.org/wiki/MongoDB
➢
This means that it is NoSQL, not utilizing the
relational SQL commands, but utilizing JSON-
like documents to query the database.
➢
The JSON-like documents are BSON, Binary
JSON.
➢
MongoDB is free and open source.
➢
http://www.mongodb.org
3. What is MongoDB
➢
MongoDB is a cross-platform document-
oriented database.
http://en.wikipedia.org/wiki/MongoDB
➢
This means that it is NoSQL, not utilizing the
relational SQL commands, but utilizing JSON-like
documents to query the database.
➢
MongoDB is free and open source.
http://www.mongodb.org
4. The Motivation
●
Sometimes using a full Microsoft SQL
Server installation, with maintenance for
databases, may be a little overkill for
something as simple as keeping track of a
file history table.
●
The need for access control is still needed
for basic security, so something more than a
File I/O is required.
5. Installation
●
Installation instructions can be found to install
the correct version by checking the OS from
http://docs.mongodb.org/manual/tutorial/insta
ll-mongodb-on-windows/
●
The download page of the installations for
Windows, OSX, Solaris and Linux can be found
at http://www.mongodb.org/downloads
●
We can optionally move the downloaded files to
“C:mongodb”.
6. Installation MSI's
●
Alternately, you can just use the MongoDB MSI
file to install the program into the “C:Program
FilesMongoDB” directory.
●
For Win32,
http://dl.mongodb.org/dl/win32/i386
●
For Win64,
http://dl.mongodb.org/dl/win32/x86_64
7. Startup
●
An data directory needs to be created to store
the database, for example “md datadb”,
which “datadb” is the default directory for
mongod.
●
Running “C:mongodbbinmongod.exe” will
now create the database.
●
The “--auth” argument can be used to force
authentication into the server.
9. There are many tools for MongoDB
➢
There are many admin tools, some can be
found at
http://docs.mongodb.org/ecosystem/tools/adm
➢
One of the admin tools that supports
multiple platforms and runs in Java is
Umongo, found at
http://edgytech.com/umongo/
10. Viewing the new database in
UMongo
After downloading Umongo, we run the
applications with the default settings to see
the new database:
11. Running as a Service
l
To run MongoDB as a service, we need a
config file and we will use the -install option
on this config file.
l
We will create a log directory in the
“C:datadb” directory.
12. Creating and starting the service
Running “mongod
--logpath=C:datadblogmongo.log
--install” as administrator in the command
prompt:
14. A recap of some of the exe's:
● mongo.exe – runs the database shell.
● mongod.exe – the core database.
● mongos.exe – auto sharding process.
● mongodump.exe – dump/export utility.
● mongorestore.exe – restore/import utility.
18. No matter the database, there
needs to be a connectionstring
l
Add an App.config with the “<add
key="connectionString"
value="Server=localhost:27017"/>”. The
default port for MongoDB is port 27017.
19. Starting the DB connection
l
We will get the connectionstring, and
connect to the database.
20. BSON and the DB
In order to perform CRUD operations on the
database, a BsonCollection is used to map to
the table. The table is really a collection of
documents. The documents being
name/value pairs.
Here, we have an insert of a document.
21. More on BSON
BSON is Binary JSON.
It is a name-value pair, in which the value
could be many different data types.
More on BSON can be found at
http://en.wikipedia.org/wiki/BSON
22. After the insert, verify
After the insert, we can verify the data in
UMongo.
Here, we see that a document was created
in the FileHistory collection.
We can also export the data to a text file.
24. Code to read the collection
A table is just a collection of documents.
Each document has a name/value pair.
We walk through the collection reading the
name-value pair.
25. Updating the collection
➢
To update the collection, find the value in
the collection, change it, and save it in the
collection.
26. Deleting a document
➢
To remove a document, a query has to be
developed that matches a name-value pair.
27. Deleting a collection (table)
➢
To remove a collection, a drop need only be
performed on the collection.
28. static void Main(string[] args)
{
// get the App.config Connection String
string connString = ConfigurationManager.AppSettings["connectionString"];
// Get the client connection
var client = new MongoClient(connString);
// Get the MongoServer Object
var server = client.GetServer();
// Gets a link to the DB, will create with first insert
MongoDatabase myDatabase = server.GetDatabase("FileHistory");
// Create a BsonDocument list for the Table
MongoCollection<BsonDocument> filesReceivedTable =
myDatabase.GetCollection<BsonDocument>("BankFilesReceieved");
// Create an individual Table row with the fields
BsonDocument filesReceived = new BsonDocument {
{ "DateReceived", DateTime.Now },
{ "FileName", "BankFile1.txt" }};
// Insert into table
filesReceivedTable.Insert(filesReceived);
// Get the table collection
MongoCollection<BsonDocument> updateTable =
myDatabase.GetCollection<BsonDocument>("BankFilesReceieved");
// Walk through each document updating the name-value pair.
foreach (var filesRead in updateTable.FindAll())
{
foreach (var elements in filesRead.Elements)
{
if (elements.Name == "FileName")
{
elements.Value = "BankNameChanged.txt";
updateTable.Save(filesRead);
}
}
}
29. // Get the table collection
MongoCollection<BsonDocument> deletingRows =
myDatabase.GetCollection<BsonDocument>("BankFilesReceieved");
// Remove on query where a name = a specific value
deletingRows.Remove(Query.EQ("FileName","BankNameChanged.txt"));
// Get the table collection
MongoCollection<BsonDocument> readingTable =
myDatabase.GetCollection<BsonDocument>("BankFilesReceieved");
// Walk through each document reading the name-value pair.
foreach (var filesRead in readingTable.FindAll())
{
foreach (var elements in filesRead.Elements)
{
Console.WriteLine("Name :" + elements.Name);
Console.WriteLine("Value :" + elements.Value);
}
}
// Get the table collection
MongoCollection<BsonDocument> deletingTable =
myDatabase.GetCollection<BsonDocument>("BankFilesReceieved");
// Delecting the table
deletingTable.Drop();
}
31. Mongo Shell
● The mongo.exe is used to execute shell commands.
http://docs.mongodb.org/manual/reference/mongo-shell/
● The shell commands can be used to show databases, users,
collections, and also create the same.
32. Adding a user
● Can be created using the
“db.addUser(“user”,”password”) in the
mongo shell.
37. User Roles
● Just because a user is added, doesn't mean
that the user has assigned roles.
● We can see the roles to be added in the
NoSQL Manager for MongoDB.
39. The Mongo C# driver
● The documentation can be found at
http://docs.mongodb.org/ecosystem/drivers/cs
● This was the nuget driver that we installed
earlier as version 1.9.2.
There are c-sharp community projects found
at
http://docs.mongodb.org/ecosystem/drivers/csh
, one of which is MongoCola.
40. MongoCola
● MongoCola is an c# open source Mongo Admin tool.
● The c-sharp source code for MongoCola can be found at
https://github.com/magicdict/MagicMongoDBTool
41. Some Admin Tools
Homepages
● MongoCola Homepage
http://osdig.com/project/index/id/22703.html#.VK
● No-SQL Manager for MongoDB
http://www.mongodbmanager.com/
Editor's Notes
Give a brief overview of the presentation. Describe the major focus of the presentation and why it is important.
Introduce each of the major topics.
To provide a road map for the audience, you can repeat this Overview slide throughout the presentation, highlighting the particular topic you will discuss next.