gpt4 book ai didi

javascript - 更新键值,其中不同的键等于某个值

转载 作者:可可西里 更新时间:2023-11-01 10:28:10 25 4
gpt4 key购买 nike

我有很多文档(通过唯一的toolname)具有以下结构,在 db test 中:

    {
"_id" : ObjectId("111111111111"),
"toolname" : "hammer",
"abilities" : [
{
"foo" : "blue",
"bar" : "beagle",
"LOE" : 0.65
},
{
"foo" : "red",
"bar" : "beagle",
"LOE" : 0.57
},
{
"foo" : "red",
"bar" : "fish",
"LOE" : 0.42
}
]
}

我可以使用以下查询找到此文档:

db.test.find({"abilities.bar":"beagle","abilities.foo":"red"})

我想做的是更新 LOE,其中我在上面的 find 查询中设置的两个参数匹配。例如 - 在 "abilities.bar":"beagle""abilities.foo":"red" 中,更新 "LOE"在该对象中为 .99

Mongo 是否有一个内置函数,您可以仅在该对象中的另一个键等于某个值时设置键的值?或者我是否需要创建一个客户端函数来返回数组索引并根据它更新?示例:

some function(){...}

db.test.update({"abilities.bar":"beagle","abilities.foo":"red"}
{ $set: { "abilities[x].LOE" : .99 } }
)

最佳答案

使用$elemMatch如下:

db.collection.update({"abilities":{"$elemMatch":{"bar":"beagle","foo":"red"}}},
{"$set":{"abilities.$.LOE":0.99}})

关于javascript - 更新键值,其中不同的键等于某个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31273590/

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