Skip to content

Instantly share code, notes, and snippets.

@m3dwards
Created January 21, 2013 18:13
Show Gist options
  • Save m3dwards/4588041 to your computer and use it in GitHub Desktop.
Save m3dwards/4588041 to your computer and use it in GitHub Desktop.
MongoDB C# Driver Example
using System;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using MongoDB.Driver.GridFS;
using MongoDB.Driver.Linq;
using MelvilleAdmin.Models;
namespace MelvilleAdmin
{
public class MongoSample
{
public MongoSample ()
{
var connectionString = "mongodb://localhost/?safe=true";
var server = MongoServer.Create(connectionString);
var database = server.GetDatabase("test");
var collection = database.GetCollection<User>("users");
var user = new User { Username = "Max", Password = "password" };
collection.Insert(user);
var id = user.Id;
var query = Query.EQ("_id", id);
var userFound = collection.FindOne(query);
//saves the entire document back again
userFound.Username = "Max2";
collection.Save(userFound);
//Update just that field
var query2 = Query.EQ("_id", id);
var update = Update.Set("Username", "Max3"); // update modifiers
collection.Update(query2, update);
//sample query
//query = Query.And(
// Query.Or(Query.EQ("title", "this"),Query.EQ ("","")),
// query.Or(Query.EQ("title", "this"),Query.EQ ("",""))
// );
//Delete a user
//var queryRemove = Query.EQ("_id", id);
//collection.Remove(queryRemove);
//var jobs = database.GetCollection("jobs");
//var query = Query.And(
// Query.EQ("inprogress", false),
// Query.EQ("name", "Biz report")
//);
//var sortBy = SortBy.Descending("priority");
//var update = Update.
// .Set("inprogress", true)
// .Set("started", DateTime.UtcNow);
//var result = jobs.FindAndModify(
// query,
// sortBy,
// update,
// true // return new document
//);
//var chosenJob = result.ModifiedDocument;
//Map/Reduce
var map =
"function() {" +
" for (var key in this) {" +
" emit(key, { count : 1 });" +
" }" +
"}";
var reduce =
"function(key, emits) {" +
" total = 0;" +
" for (var i in emits) {" +
" total += emits[i].count;" +
" }" +
" return { count : total };" +
"}";
var mr = collection.MapReduce(map, reduce);
foreach (var document in mr.GetResults()) {
Console.WriteLine(document.ToJson());
}
//var query = Query.EQ("status", "pending");
//var cursor = tasks.Find(query);
//cursor.Skip = 100;
//cursor.Limit = 10;
//foreach (var task in cursor) {
// // do something with task
//}
//var query = Query.EQ("status", "pending");
//foreach (var task in tasks.Find(query).SetSkip(100).SetLimit(10)) {
// // do something with task
//}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment