例如,文档。
[
{
"username": "joy",
"size_info": [
{
"data1": "apple bear cat",
"data2": 100
},
{
"data1": "dog eat fog good ",
"data2": 100
},
{
"data1": "hug ill jump",
"data2": 100
}
]
}
]
我想更新如下文档。
data 3是在从data 1得到2个字之后按空格分割数据。
当我使用$substr时,我得到错误can't convert from BSON type array to String
[
{
"username": "joy",
"size_info": [
{
"data1": "apple bear cat",
"data2": 100,
"data3": "apple bear"
},
{
"data1": "dog eat fog good ",
"data2": 100,
"data3": "dog eat"
},
{
"data1": "hug ill jump",
"data2": 100,
"data3": "hug ill"
}
]
}
]
有可能吗?谢谢你的帮助。
1条答案
按热度按时间5jvtdoz21#
先决条件:必须使用聚合管道更新记录。
$set
-设置size_info
数组。1.1.
$map
-迭代size_info
数组中的元素并返回一个新数组。1.1.1.
$mergeObjects
-将当前小版本文档与 * 1.1.1.1 * 的结果合并。1.1.1.1.一个包含
data3
字段的文档,使用正则表达式从结果中获取捕获前两个单词的第一个捕获元素。Demo Solution 1 @ Mongo Playground
$firstN
**获取前N个元素先决条件:MongoDB版本5.2
$set
-设置size_info
阵列。1.1.
$map
-迭代size_info
数组中的元素并返回一个新数组。1.1.1.
$mergeObjects
-将当前小版本文档与 * 1.1.1.1 * 的结果合并。1.1.1.1.一个带有
data3
字段的文档。修剪$reduce
操作符返回的结果,该操作符将:a.用空格将
data1
拆分成一个数组,取前两个元素。b.将数组中的值(来自 * a * 的结果)连接成一个带空格的字符串。
Demo Solution 2 @ Mongo Playground