web-dev-qa-db-fra.com

Comment abandonner une requête en cours d'exécution dans le shell MongoDB?

Je ne peux pas croire que je doive poser cette question, mais comment puis-je arrêter une requête que je viens d'exécuter, qui est maintenant en cours d'exécution et qui prendra évidemment beaucoup de temps pour se terminer dans le shell Mongo? Control+C Semble planter le shell et crache une tonne d'erreurs. Les solutions idiotes suggérées dans cet article bien sûr ne font rien. Je comprends que je pourrais ouvrir un autre onglet de terminal et exécuter db.currentOp(), trouver l'ID d'opération, puis exécuter db.killOp(), mais je ne peux pas croire que ce soit la seule solution. Je dois manquer quelque chose d'évident.

36
collisionTwo

Basé sur la réponse d'Alex.

  1. Recherchez les opérations en cours d'exécution:

    db.currentOp()
    

Mongo currentOp Response

  1. Tuez l'opération basée sur l'opid

    db.killOp(30318806)
    
36

Selon Mongo documentation , vous devez:

  1. Obtenez l'ID d'opération en cours via db.currentOp()
  2. Tuez opp via db.killOp()

Un bon exemple de script peut être trouvé ici .

8
Alex Erygin

Pour un cluster fragmenté:

  1. db.currentOp()
  2. db.killOp("shard_id:opid")

Par exemple:

db.killOp("shard0000:3134616")
1
Yuriy Bosov