En essayant de comprendre comment basculer la valeur booléenne de "active" dans l'exemple de true à false ou false à true en fonction de la valeur existant dans le document. Donc, si c'est vrai, changez-le en faux et si c'est faux, changez-le en vrai. Exemple de tableau.Basculer par programme la valeur booléenne avec le pilote natif Mongodb
[{ _id: 59cb78434436be173e038aaa, active: true, title: 'One' },
{ _id: 59cb78434436be173e038aab, active: false, title: 'Two' },
{ _id: 59cb78434436be173e038aac, active: false, title: 'Three' }]
const todos = db.collection('todos');
const active = !active;
await todos.findOneAndUpdate({ _id: ObjectID(args.id) },
{ $set: { active: active } }, function(err, doc) {
if (err) {
throw err;
} else {
console.log('Updated');
}
});
Je ne peux pas paramétrer directement en passant vrai ou faux à { $set: { active: true }}
actif. Comment pourrais-je tester la valeur et retourner le contraire?
Merci
Merci @artem d'avoir pris le temps de répondre. Ces solutions fonctionnaient aussi loin que findOneAndUpdate(). Je n'avais pas besoin de $ mod b/c graphql s'occupait de ça mais j'étais content de l'apprendre. À la fin, le faire comme vous l'avez suggéré, m'a demandé de modifier un champ de schéma de bool à str donc je suis allé avec '' 'const todos = db.collection ('todos'); const oldStatus = wait todos.findOne ({_id: ObjectID (args.id)}); const newStatus =! OldStatus.active; attend todos.findOneAndUpdate ({_id: ObjectID (args.id)}, {$ set: {actif: newStatus}}); return attend todos.find(). ToArray(); '' 'Y a-t-il une meilleure façon de faire cela? – idkjs
Pourquoi une chaîne au lieu d'un numéro? Et je ne comprends pas vraiment quelle solution vous avez finalement choisie? –
Obtenez le champ que je veux, todo.active, avec une requête. Créez un nouveau jeu de variables à la valeur basculée du champ, newValue =! Todo.active. Ensuite, mettez à jour le document d'origine avec la nouvelle valeur. Pas atomique, et deux allers-retours, alors j'espérais qu'il y aurait une autre façon de travailler ça. – idkjs