10
votes

Exécuter le script de shell de Mongodb via le pilote C #

J'ai lu Cette question et je n'ai pas compris. Existe-t-il la capacité d'exécuter un script arbitraire de shell mongodb via le pilote C #?


0 commentaires

3 Réponses :


3
votes

Je n'ai pas essayé, mais je pense que c'est ce que vous recherchez:

Mongoserver.RunadMincommand Méthode (string) http://api.mongodb.org/csharp /1.1/HTML/A83249AE-0989-7C24-7240-4506053D83C1.HTM


3 commentaires

server.runadmincommand (@ "db.blog.insert ({titre:" "mon blog post" "});"); donne une erreur "db.blog.insert ({titre : "Mon article de blog"}); a échoué: pas de ce type cmd: db.blog.insert ({titre: "mon article de blog"}); (réponse: {"errsg": "Pas de tel cmd: db.blog.insert ({titre: \" mon blog post \ "});", "mauvais cmd": {"db.blog.insert ({Titre: \ "Mon blog post \"}); ": true}," ok ": 0})


Semble que le script arbitraire ne pouvait pas être exécuté en utilisant Mongoserver.RunadMincommand () méthode.


@Dao + par l'utilisateur MongoDB => peut conduire à une escalade de permission



4
votes

Non, vous auriez besoin de lancer un processus de shell Mongo, en utilisant quelque chose comme processus.start et transmettez la commande que vous souhaitez exécuter, par exemple xxx

Cependant, le C # Le pilote peut faire la plupart des choses que la coquille peut, donc si possible, il est beaucoup plus facile d'utiliser directement le conducteur. < / p>


3 commentaires

Je n'ai pas testé votre proposition pour exécuter Mongo Admin Util util à l'aide de process.start et en passant la commande informatique à exécuter. Mais il semble que cela fonctionne. C'est une pitié, que je ne puisse pas gérer qu'avec le pilote C # ici. Utilisation de Mongo Adminrent Util et Process.Start a l'air un peu maladroit. Si personne n'a ajoute de nouvelle idée comment utiliser uniquement le pilote C # pour exécuter le script arbitraire de Mongo Shell la plus proche, je vais accepter cette réponse.


ATTENTION: Même si c'est une solution de travail, il est très faux en termes de sécurité, de portabilité et de robustesse.


Vous dites qu'il n'est pas possible d'exécuter des requêtes arbitraires pour la mise à jour / la récupération? Je suis très en faveur des expressions C #, Lambda, etc. Mais quand il est venu à Mongodb, beaucoup d'aide se présente sous forme de script (essayant également différentes choses dans un client produit également un script). Lorsque je convertit que le code ISH C # ', je me retrouve avec un gazillion de nouveau bsondocument (...) niché au-delà du point de décence et de santé mentale.



17
votes
some_items mongo collection:

{
   some_collection: [{ someProperty: 12, ....}],
   ....

}

3 commentaires

Puis-je savoir s'il y a un moyen pour le JavaScript invoqué pour retourner des types complexes (ce qui serait finalement pocos dans le code C #) retour au module C #?


@Cslewis si je ne me trompe pas Mongodb .Net pilote pour base de données.eval () méthode renvoie bpsvalue - résultat de l'exécution du script sur le serveur. Vous pouvez essayer de le jeter à certains bsondocument , en prise en compte, cette exécution du script pourrait être échouée par le serveur et plutôt certaines données dans bpsvalue vous aurez un message d'erreur dans le < Code> eval () S. Quoi qu'il en soit, tout le code est un piratage. Si vous utilisez ce code dans un flux d'exécution de l'application normal, vous faites certainement quelque chose de mal.


THX. Pourriez-vous s'il vous plaît faire un coup d'œil rapide à Stackoverflow.com/questions/35456071/... ?