我写了这个聚合管道。我想更新此管道中匹配的文档并根据阶段进行更新。我假设 $replaceRoot 会做到这一点。我是否错了。我只是想知道聚合管道是否可以更新文档。如果是的话,这是最佳实践还是黑客。而且我不想使用 $out 运算符。
[
{ $match: { name: "awss3-metadata-loader" } },
{
$set: {
tags: {
$cond: {
if: {
$in: [{ $type: "$tags" }, ["null"]],
},
then: [
{
k: "awss3metadataloader",
v: "new",
},
],
else: {},
},
},
},
},
{ $replaceRoot: { newRoot: "$$ROOT" } },
]```