Created
January 21, 2013 18:13
-
-
Save m3dwards/4588041 to your computer and use it in GitHub Desktop.
MongoDB C# Driver Example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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