我需要更新mongodb中的记录,其中新值取决于记录中另一个字段的值。
例如给出以下集合
{id: 1, list: []}
{id: 2, list: [6]}
{id: 3, list: []}
{id: 4, list: [6]}
{id: 5, list: []}
我希望能够说:
if ('id' is in [1, 3, 5]) => add the value '6' to 'list'
else => remove the value '6' from 'list'
结果将是:
{id: 1, list: [6]}
{id: 2, list: []}
{id: 3, list: [6]}
{id: 4, list: []}
{id: 5, list: [6]}
这可以在2个更新查询中完成,如下所示,但我尝试在1中执行:
db.collection.update({$in: [1, 3, 5]}, {$addToSet: {list: 6}})
db.collection.update({$in: [2, 4]}, {$pull: {list: 6}})
代码是Java。
答案 0 :(得分:1)
MongoDB目前还没有内部案例声明,这样就可以像在SQL自己的case
能力中那样执行此操作。
因此,您需要单独执行每个操作,但是您可以将后一个查询更改为:
db.collection.update({$nin: [1, 3, 5]}, {$pull: {list: 6}})
这应该完成您提供的if
声明。