gpt4 book ai didi

couchbase - 使用 mutate_in 将子文档更新为列表

转载 作者:行者123 更新时间:2023-12-04 04:05:43 26 4
gpt4 key购买 nike

在此非常感谢您的帮助。

我试图通过使用 mutate_in 来改变子文档,然后使用我想要放入的每个元素的路径定义 SD。代码如下所示:

cb.mutate_in(‘1_2’,
SD.upsert(
‘strat.a’, 76543, create_parents=True),
SD.upsert(
‘strat.b’, “true”, create_parents=True),
SD.upsert(
‘strat.c’, 30, create_parents=True),
SD.upsert(
‘strat.d’, -25, create_parents=True),
SD.upsert(
‘strat.e’, “C”, create_parents=True),
SD.upsert(
‘strat.f’, 7, create_parents=True),
)

这是它带来的结果:

{
“strat”: {
“a”: 76543,
“b”: “true”,
“c”: 30,
“d”: -25,
“e”: “C”,
“f”: 7
}
}

我正在寻找的是这个(请注意,我将其放在此处的列表中):

{
“Strat”: [
{
“a”: “12345”,
“b”: 7,
“c”: “C”,
“d”: “true”,
“e”: -25,
“f”: 25
}
]
}

一旦我能够将上述内容作为列表实现,我应该能够像这样生成多个子文档:

请注意,现在我在这个列表中有 2 个元素,它们都具有不同的值:

{
“Strat”: [
{
“a”: “12345”,
“b”: 7,
“c”: “C”,
“d”: “true”,
“e”: -25,
“f”: 25
},
{
“a”: “34567”,
“b”: 8,
“c”: “F”,
“d”: “false”,
“e”: -30,
“f”: 40
}
]
}

问题:

can I achieve this with mutate_in and SD.upsert ?
if so, how can I change that code I have provided at the beginning of this thread to put things in a list
Once I can put it as a list, how can I avoid upsert not overwriting the record but to attach another record in that list?

非常感谢您的帮助。谢谢!

期待所有 couchbase 大师的指导

最佳答案

您可以创建一个表示新 JSON 对象的 Python 字典,并将其附加到数组(create_parents=True 表示“如果数组不存在则创建它”)。

我对 Python 不是很流利,也不知道这是否可以编译...所以我们称它为伪代码:-)

cb.mutate_in(‘1_2’,
SD.array_append('strat',
{
"a": "12345",
"b": 7,
"c": "C",
"d": "true",
"e": -25,
"f": 25
},
create_parents=True),

SD.array_append('strat',
{
// some other values...
},
create_parents=True));

您可以通过这种方式一次最多附加 16 个项目(subdoc 批处理限制为 16 个操作)。

关于couchbase - 使用 mutate_in 将子文档更新为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62546512/

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