mongodb - 如何用猫鼬在mongodb中反转布尔值
问题描述
我有一个数据如下。
[
{
"id": 1,
"exist": true
},
{
"id": 2,
"exist": false
},
{
"id": 3,
"exist": false
}
]
只有一个对象可以存在为真。因此,当我 findOneAndUpdate({_id:2}),{exist:true}) 时,我希望使用聚合等在一个查询中自动将“id:1”的存在更改为 false。
你能推荐一些想法吗?非常感谢您阅读我的问题。
解决方案
从 MongoDB 4.2 开始,您可以使用聚合管道进行更新,因此您可以执行以下操作:
db.your_collection.update(
{
$or: [
{
id: 2,
exist: false
},
{
id: {$ne: 2},
exist: true
}
]
},
[{$set: {exist: {$eq: [ "$exist", false ] }}}],
{multi: true}
)
解释:
过滤器将查找具有您想要的 id 但不存在或没有 id 但存在为 true 的记录。在这种情况下,它会发现:
[ { "id": 1, "exist": true }, { "id": 2, "exist": false } ]
找到记录的更新反向
exist
字段。
推荐阅读
- c - 我们可以将变量设置为 C 中的数字范围吗?
- symfony - Symfony 4:将缺少的 USE 语句附加到错误环境日志
- javascript - 如何使用参数和#reference从http> https重定向网页
- ruby - Ruby 不允许我导入 BigDecimal 库
- javascript - 通过 php 创建 Javascript 数组
- dojo - 您可以在单独的文件(如角度)中创建组件以进行更模块化的设计吗
- xterm - URxvt 使用深色而不是浅色作为提示(xterm 使用)
- apache-spark - Spark Streaming 创建许多小文件
- javascript - 为什么在开发工具中检查时未定义 JS 中分配的变量?
- javascript - Convert javascript array into json array