【问题标题】:Trying to execute addField with aggregate pipeline and it does not work尝试使用聚合管道执行 addField 并且它不起作用
【发布时间】:2021-01-06 08:49:24
【问题描述】:

我正在使用猫鼬向集合(每个数据)添加一个字段。它返回零错误,但是,当我检查数据库时,它没有添加任何字段。

app.use('/', (res, req) => {
  mongoose.connection.db.collection('placemodels').aggregate(
    [
      {
        $addFields: {
          type: 'place',
        },
      },
    ],
    (err, e) => {
      console.log(err, 'ahsidufhieuahiu');
      console.log(e);
    }
  );
});

我哪里做错了?

编辑

 mongoose.connection.db.collection('placemodels').aggregate(
    [
      {
        $set: {
          type: 'place',
        },
      },
    ],
    (err, e) => {
      console.log(err, 'ahsidufhieuahiu');
      console.log(e);
    }
  );

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    $addFields 管道阶段只会将新字段添加到已获取的文档中,即它永远不会实际修改数据库中的文档。

    换句话说 - 它只是修改输出中的文档。

    如果您想实际向数据库中的文档添加新字段,您可以使用collection.update(..)$set-操作符:https://docs.mongodb.com/manual/reference/operator/update/set/

    【讨论】:

    • ` { $set: { type: 'place', }, `我替换成这个,但还是没有变化?
    • 请显示完整的查询。
    • 正如我在答案中所说,您需要使用.ùpdate(...) 而不是.aggregate(),然后应用$set。阅读我发给你的链接,有例子。
    猜你喜欢
    • 2020-04-13
    • 2020-09-02
    • 2021-01-22
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2021-11-29
    • 2018-04-22
    相关资源
    最近更新 更多