在 MongoDB 中,如何使用对当前值进行操作的函数更新嵌套文档的值?
In MongoDB, how do I update the value of a nested document using a function that operates on the current value?
我正在尝试 $trim 嵌套文档中字段的值,但我一直无法弄清楚如何让它发挥作用。
我想 运行 $trim 在所有文档的 code
字段上,以便从 [=21= 中的静态文档中删除前导空格和尾随空格].
我正在使用 MongoDB 4.2.
我的文档结构如下:
{
"_id": "root_id",
"products": [
{
"id": "p1",
"code": "TRAILING "
},
{
"id": "p2",
"code": " LEADING"
}
{
"id": "p3",
"code": "CLEAN"
}
]
}
您可以为 MongoDB 版本 4.2 使用 Updates with Aggregation Pipeline。
$set
- 设置 products
字段值。
1.1。 $map
- 迭代 products
数组和 return 一个新数组。
1.1.1。 $mergeObjects
- 合并当前对象 ($$this
) 和具有来自 1.1.1.1.
的 code
字段的对象
1.1.1.1。 $trim
- Trim code
值。
并使用 { multi: true }
更新多个文档。
db.collection.update({},
[
{
$set: {
products: {
$map: {
input: "$products",
in: {
$mergeObjects: [
"$$this",
{
code: {
$trim: {
input: "$$this.code"
}
}
}
]
}
}
}
}
}
],
{
multi: true
})
我正在尝试 $trim 嵌套文档中字段的值,但我一直无法弄清楚如何让它发挥作用。
我想 运行 $trim 在所有文档的 code
字段上,以便从 [=21= 中的静态文档中删除前导空格和尾随空格].
我正在使用 MongoDB 4.2.
我的文档结构如下:
{
"_id": "root_id",
"products": [
{
"id": "p1",
"code": "TRAILING "
},
{
"id": "p2",
"code": " LEADING"
}
{
"id": "p3",
"code": "CLEAN"
}
]
}
您可以为 MongoDB 版本 4.2 使用 Updates with Aggregation Pipeline。
$set
- 设置products
字段值。1.1。
$map
- 迭代products
数组和 return 一个新数组。1.1.1。
的$mergeObjects
- 合并当前对象 ($$this
) 和具有来自 1.1.1.1.code
字段的对象1.1.1.1。
$trim
- Trimcode
值。
并使用 { multi: true }
更新多个文档。
db.collection.update({},
[
{
$set: {
products: {
$map: {
input: "$products",
in: {
$mergeObjects: [
"$$this",
{
code: {
$trim: {
input: "$$this.code"
}
}
}
]
}
}
}
}
}
],
{
multi: true
})