Run mongodb script shell via c # driver

I read this question and did not understand. Is it possible to execute an arbitrary mongodb script shell via a C # driver?

+7
source share
3 answers
var mongoServer = MongoServer.Create("mongodb://<connectionstring>"); var database = mongoServer.GetDatabase("mydatabase"); string mycollectionCount database.Eval("function() { return db.mycollection.count(); }").ToString(); 

This is useful if you are trying to change property types, for example, as follows:

 string updateScript = @" function () { db.some_items.find().forEach(function(documentItem) { documentItem.some_collection.forEach(function(collectionItem) { if (typeof collectionItem.SomeProperty === 'number' && Math.floor(collectionItem.someProperty) === collectionItem.someProperty) { collectionItem.someProperty = '' + collectionItem.someProperty; } }); db.modules_elementary.save(documentItem); }); return true; }"; var updateResult = MongoReadDatabase.Database.Eval(updateScript).ToString(); if (updateResult != "true") { throw new ApplicationException("Update of something failed"); } 

This code changes the type of someProperty , which is an element of the collection collection:

 some_items mongo collection: { some_collection: [{ someProperty: 12, ....}], .... } 
+14
source

No, you need to start the Mongo shell process using something like Process.Start and pass in the command you want to execute, for example

 mongo.exe mydb --eval "printjson(db.getCollectionNames())" 

However, the C # driver can do most of the things that the shell can use, so if possible, it is much easier to use the driver directly.

+2
source

I have not tried, but I think this is what you are looking for:

MongoServer.RunAdminCommand Method (String) http://api.mongodb.org/csharp/1.1/html/a83249ae-0989-7c24-7240-4506053d83c1.htm

0
source

All Articles