web-dev-qa-db-fra.com

Différence entre findOneAndDelete () et findOneAndRemove ()

Je ne suis pas capable de différencier findOneAndDelete () Et findOneAndRemove () dans le mangouste documentaion .

Query.prototype.findOneAndDelete ()

Cette fonction diffère légèrement de Model.findOneAndRemove () en ce que findOneAndRemove () devient une commande MongoDB findAndModify (), par opposition à une commande findOneAndDelete (). Pour la plupart des cas d'utilisation de la mangouste, cette distinction est purement pédante. Vous devez utiliser findOneAndDelete () sauf si vous avez une bonne raison de ne pas le faire.

24
G4uKu3_Gaurav

Dans le client natif MongoDB (Mongoose est différent) en passant { remove: true } à findAndModify le supprime du document trouvé, son comportement dans ce cas semblerait très similaire à findOneAndDelete. Cependant, il existe certaines différences lors de l'utilisation d'autres options:

  • findAndModify prend 5 paramètres: query, sort, doc (l'objet de mise à jour), options et un callback. findOneAndDelete ne prend que 3 (filter ou une requête, options et un callback)
  • options pour findAndModify inclure w, wtimeout et j pour les problèmes d'écriture, comme:

    “Le niveau d'accusé de réception demandé à MongoDB pour les opérations d'écriture sur un mongod autonome, sur des jeux de répliques ou sur des clusters fragmentés.“ Ou simplement sur des niveaux de garantie disponibles pour signaler le succès d'une opération d'écriture.

    options pour findOneAndDelete ne pas inclure d'écriture concerne la configuration.

  • findAndModify vous permet de retourner le nouveau document et de le supprimer en même temps.

Exemple:

// Simple findAndModify command returning the new document and
  // removing it at the same time
  collection.findAndModify({b:1}, [['b', 1]], {$set:{deleted: Date()}}, {remove:true}, calback)
1
Moad Ennagi

Ils font tous les deux la même chose (suppriment un document dans une base de données mongodb), mais ils ont peu de différences, et la différence utile commune est que findOneAndRemove() renvoie le document supprimé si vous êtes intéressé à l'utiliser après sa enlevé.

0
FouadDev

Je vous suggère d'utiliser findOneAndDelete (). Mongoose fournit à la fois les fonctionnalités permettant de gérer les données à l'aide de l'ORM et les fonctionnalités permettant d'écrire directement dans la base de données, findOneAndDelete () étant l'une de ces dernières. Ecrire directement dans la base de données est plus dangereux car vous courez le risque de ne pas appeler de middleware ou de validateurs, ce qui pourrait entraîner l'envoi de données partielles ou incomplètes à la base de données. Notez que j'ai dit que c'est plus dangereux, pas que c'est totalement dangereux, findOneAndDelete () se contente de continuer dans l'ORM en ajoutant la sécurité.

0
LiamSimpson

Les deux d'entre eux sont presque similaires sauf findOneAndRemove utilise findAndModify avec remove indicateur et la complexité temporelle sera un peu plus élevée comparée à findOneAndDelete parce que vous faites une mise à jour. Supprimer sont toujours plus rapides.

0
Manni Dula

findOneAndRemove renvoie le document supprimé. Par conséquent, si vous supprimez un document dont vous décidez par la suite de ne pas supprimer, vous pouvez le réinsérer dans la base de données. S'assurer que votre logique est saine avant de retirer le document serait préférable aux vérifications ultérieures à la messagerie instantanée.

findOneAndDelete a le paramètre de tri qui peut être utilisé pour influencer le document mis à jour. Il a également un paramètre TimeLimit qui peut contrôler dans quelle opération doit se terminer

0
Vivek Ghanchi

Dans Mangouste, findOneAndDelete fonctionne de la même manière que findOneAndRemove. Ils recherchent tous les deux un objet d'après ses propriétés dans JSON, puis le suppriment et lui renvoient l'objet une fois après la suppression. Lorsque vous utilisez mongodb en tant que base de données, findOneAndDelete peut vous être utile, mais dans le cas de mongoose, il est obsolète. Je vous conseillerai peut-être d’utiliser findOneAndDelete pour effectuer votre opération en fonction de la dernière configuration de Mongoose et de nodejs de cette période. https://github.com/Automattic/mongoose/issues/688

0
Xcode