gpt4 book ai didi

java - 根据字段值在 1 个查询中运行 2 个 mongodb 更新

转载 作者:行者123 更新时间:2023-12-01 14:59:43 25 4
gpt4 key购买 nike

我需要更新 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编写的。

最佳答案

MongoDB 目前还没有内部 case 语句,它允许您像 SQL 自己的 case 功能一样执行此操作。

因此,您需要单独执行每个操作,但是您可以将后一个查询更改为更符合以下内容:

db.collection.update({$nin: [1, 3, 5]}, {$pull: {list: 6}})

这应该可以更好地完成您提供的 if 语句。

关于java - 根据字段值在 1 个查询中运行 2 个 mongodb 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13848836/

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