在MongoDB中将$ addFields用作更新功能的一部分

梅里克

我试图弄清楚如何$addFields在用于更新文档的函数中使用该操作。生成该字段的逻辑非常简单,我只需取出数组中的最后一个对象,如下所示:

  {
    $addFields: { activeWorkflow: { $arrayElemAt: ["$workflow", -1.0] } }
  }

现在,我需要弄清楚如何将这种聚合纳入我的更新函数中,其相关代码如下所示:

updatedDoc = await request.findOneAndUpdate(
  StaffMember,
  {
    _id: request.parameters.id
  },
  req,
  {
    new: true
  }
);

我尝试做的是这样的:

updatedDoc = await request.findOneAndUpdate(
  StaffMember,
  {
    _id: request.parameters.id
  },
  req,
  {
    new: true
  }
);

await request.aggregate(updatedDoc, [
  {
    $addFields: { activeWorkflow: { $arrayElemAt: ["$workflow", -1.0] } }
  }
]);

...但这给我一个错误:

TypeError:mongooseModelObject.aggregate不是函数

我会像这样将$ addFields运算符与$ set一起使用吗?

updatedDoc = await request.findOneAndUpdate(
      StaffMember,
      {
        _id: request.parameters.id
      },
      {
        $set: {
          req,
          $addFields: { activeWorkflow: { $arrayElemAt: ["$workflow", -1.0] } }
        }
      },
      {
        new: true
      }
    );

如何将聚合作为此类函数的一部分运行?一个简单的示例将帮助我理解该如何完成-如果确实可以完成。

当然,还有其他方法可以执行此操作,但是我想利用mongo特定的方法来处理此问题,例如使用mongo操作$addFields看起来像什么?

顺便说一句,我在聚合中使用的包装函数如下所示:

  async aggregate(mongooseModelObject, aggregateObject = {}) {
    try {
      return await mongooseModelObject.aggregate(aggregateObject).exec();
    } catch (err) {
      this.sendError(err);
    }
  }
米克尔

基本上,您不能将其aggregate用作更新的一部分。使用更新数据的唯一方法$addFields是使用$ out,如下所示:

db.col.aggregate([
    {  $addFields: { activeWorkflow: { $arrayElemAt: ["$workflow", -1.0] } } },
    {  $out: "col" }
])

但这很遗憾会activeWorkflow为中的所有文档添加col

对于常规而言,.update()您不能引用其他字段,因此对单个文档执行此操作的唯一方法是使用findOne()获取该文档,然后在应用程序逻辑中添加新字段,然后使用update()save()存储该更新的文档(此处是旧问题)。 。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中将字符串用作变量的一部分

如何在Python中将变量值用作变量名的一部分?

如何在Microsoft Word中将SUM(ABOVE)用作较长公式的一部分?

如何在PowerShell中将变量用作正则表达式的一部分?

在case_when()中将(。)用作分组后的小对象上mutate()的一部分

如何更新mongodb文档字符串的一部分?

删除数组mongodb的一部分

如何在Android中将图像的一部分用作按钮背景?

如何在Paw中将文件作为多部分请求的一部分上载?

Wordpress:是否可以在块编辑器样式表中将post-type用作css选择器的一部分?

如何在Replace()语句中将列名用作字符串模式和替换字符串的一部分?

如何在运行Linux的Chromebook中将USB闪存驱动器用作文件系统的一部分?

如何在python中将数组的一部分存储在不同的数组中

在C ++中将字符数组的一部分复制到wxString

如何在iPhone开发中将度数符号添加为UILabel的一部分?

如何在iOS中将字符串的一部分加粗?

在导航抽屉的一部分中将操作栏项更改为searchView

在Smarty中将标签放在字符串的一部分周围

如何在PowerShell中将参数作为-file的一部分传递

如何在Golang中将jsonb编码为http响应的一部分

在C#中将表达式的一部分定义为变量

如何在Jgit中将文件列表作为提交的一部分

如何在SwiftUI中将View()作为列表的一部分传递?

如何在PHP中将“&”作为字符串的一部分传递?

如何在MarkLogic中将子元素包含为单词查询的一部分

在turbo c ++中将字符串的一部分转换为整数

如何在SQL中将NULL连接为字符串的一部分

在Racket中将程序的一部分视为数据

在Woocommerce中将新的运输方式作为插件的一部分