MongoDB 如何将数组中的字段类型从字符串更改为数组并保持原始值
MongoDB how to change field type in array from string to array and keep original value
原图
document
我有数据库“test”和集合“testing”。在那个集合中,我有一个名为“方法”的数组文档,其中包含对象 0(可能还有更多对象 1、2、3、4 ...)。在这些对象中,我有字符串字段“tool”和工具“xray”。我希望该字符串字段“工具”是工具数组。我找到了将工具字段更改为数组的命令:
db.testing.update(
{},
[{ $set: { "methods.tool": ["$methods.tool"] } }],
{ multi: true }
)
这行得通,但它创建了一个额外的数组“0:Array”,我不想要那个
Outcome
我希望最终结果如下所示:
end result
查询
$map
更新方法的所有文档成员
$$this
每次都是当前会员
$mergeObjects
用于添加更新的字段,如果tool:xray
变成tool : [xray]
*该字段是数组一部分的路径,它们也是数组,“$methods.tool”是所有方法中所有工具的数组。
update(
{},
[{"$set":
{"methods":
{"$map":
{"input": "$methods",
"in": {"$mergeObjects": ["$$this", {"tool": ["$$this.tool"]}]}}}}}],
{"multi": true})
原图 document
我有数据库“test”和集合“testing”。在那个集合中,我有一个名为“方法”的数组文档,其中包含对象 0(可能还有更多对象 1、2、3、4 ...)。在这些对象中,我有字符串字段“tool”和工具“xray”。我希望该字符串字段“工具”是工具数组。我找到了将工具字段更改为数组的命令:
db.testing.update(
{},
[{ $set: { "methods.tool": ["$methods.tool"] } }],
{ multi: true }
)
这行得通,但它创建了一个额外的数组“0:Array”,我不想要那个
Outcome
我希望最终结果如下所示: end result
查询
$map
更新方法的所有文档成员$$this
每次都是当前会员$mergeObjects
用于添加更新的字段,如果tool:xray
变成tool : [xray]
*该字段是数组一部分的路径,它们也是数组,“$methods.tool”是所有方法中所有工具的数组。
update(
{},
[{"$set":
{"methods":
{"$map":
{"input": "$methods",
"in": {"$mergeObjects": ["$$this", {"tool": ["$$this.tool"]}]}}}}}],
{"multi": true})