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 #? P>
3 Réponses :
Je n'ai pas essayé, mais je pense que c'est ce que vous recherchez: p>
server.runadmincommand (@ "db.blog.insert ({titre:" "mon blog post" "});"); code> 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}) code>
Semble que le script arbitraire ne pouvait pas être exécuté en utilisant Mongoserver.RunadMincommand () code> méthode.
@Dao + par l'utilisateur MongoDB => peut conduire à une escalade de permission
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 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> < / p>
Je n'ai pas testé votre proposition pour exécuter Mongo Admin Util util à l'aide de process.start code> 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 code> 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 (...) code> niché au-delà du point de décence et de santé mentale.
some_items mongo collection: { some_collection: [{ someProperty: 12, ....}], .... }
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 () code> méthode renvoie
bpsvalue code> - résultat de l'exécution du script sur le serveur. Vous pouvez essayer de le jeter à certains
bsondocument code>, en prise en compte, cette exécution du script pourrait être échouée par le serveur et plutôt certaines données dans
bpsvalue code> vous aurez un message d'erreur dans le < Code> eval () code> 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 à