gpt4 book ai didi

javascript - 使用 Mongodb native 驱动程序以编程方式切换 boolean 值

转载 作者:行者123 更新时间:2023-11-30 21:07:49 25 4
gpt4 key购买 nike

我试图找出如何根据文档中存在的值将示例中“active”的 boolean 值从 true 切换为 false 或将 false 切换为 true。因此,如果它是 true,将其更改为 false,如果它是 false,则将其更改为 true。示例数组。

[{ _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');
}
});

我不能通过将 true 或 false 传递给 active { $set: { active: true }} 来直接设置它。我将如何测试该值并返回相反的值?

谢谢

最佳答案

目前 MongoDB 中没有 $toggle 运算符,因此不可能使这种切换操作成为原子操作。但是此功能有某种解决方法。首先,您需要用数字替换 boolean 值。然后,与其尝试用相反的值替换它,不如每次都递增它。

todos.findOneAndUpdate({_id: ObjectId(args.id)}, {$inc:{ active: 1}});

所以你看到每次它都会 $incremented 1,这意味着它总是从偶数切换到奇数。

下一步是以这种方式修改您的“获取”查询:

todos.find({'active' : { '$mod' : [ 2, 1 ] });

它将返回所有“事件”字段现在为奇数的文档,例如您可以将其视为true,反之亦然。

关于javascript - 使用 Mongodb native 驱动程序以编程方式切换 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46445311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com