gpt4 book ai didi

RethinkDB:​​如何追加到嵌套结构中的数组

转载 作者:行者123 更新时间:2023-12-02 23:45:10 25 4
gpt4 key购买 nike

我正在尝试附加到嵌套字段中的数组,我必须根据运行时信息找到该数组。

这是一个例子:

r.db("test")
.table("test")
.insert({ "stock": [{ "bin":"abc", "entries":[{ "state":1 }] }] })

这个想法是文档包含一个“stock”键,它是多个“存储箱”的数组。每个垃圾箱都有一个名称和一些条目。我需要能够以原子方式追加到其中一个容器中的条目,而不影响其他容器。

我尝试过这种方法:

r.db("test")
.table("test")
.update(function(item) {
return {"stock": item("stock")
.filter({ "bin": "abc" })
.append({ "state":42 })
}
})

…但这并没有附加到正确的级别,而且我不确定它是否会保留名称不是“abc”的现有垃圾箱。

最佳答案

更新数组的元素时,您应该使用带有索引的 changeAt 或在数组上使用 map,而不是使用 filter

该查询可能如下所示:

r.table("test")
.update(function(item){
return {"stock": item("stock").map(function(stock){
r.branch(stock.hasFields({"bin": "abc"})
stock.merge({"entries": stock("entries").append({"state": 42})}),
stock)})}})

或者,如果您将条目存储在对象而不是数组中,如下所示:

{ "stock": {"abc": {"entries":[{ "state":1 }] }} }

更新查询可能如下所示:

r.table("test")
.filter(r.row.hasFields({"stock": {"abc": true}}))
.update({"stock": {"abc": r.row("stock")("abc").append({"state": 42})}})

关于RethinkDB:​​如何追加到嵌套结构中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29821448/

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