当前位置: 首页 > 知识库问答 >
问题:

如何用Mongoose更新MongoDb中的嵌套对象

傅经业
2023-03-14

我正在尝试更新MongoDB中嵌套对象中的一个键值。目前,我的做法是覆盖整个嵌套对象,我如何改变一个键-值对?

  try {
      Files.updateOne(
        { _id: document._id },
        {a:{b:{c:"new text", d: "not to change"}}},
        function (err, result) {
          if (err) {
            res.send(err);
          } else {
            res.send(result);
          }
        }
      );
    } catch (err) {
      res.status(400).send(err);
    }

共有2个答案

陶锋
2023-03-14

试试看:

try {
  Files.updateOne(
    { _id: document._id },
    { "a.b.c": "new text" },
    function (err, result) {
      if (err) {
        res.send(err);
      } else {
        res.send(result);
      }
    }
  );
} catch (err) {
  res.status(400).send(err);
}
柴博
2023-03-14

可以使用$set运算符,而不是将对象作为第二个参数传递:

{ $set: { "a.b.c": "new text" }  }
 类似资料:
  • 我是MongoDB的新手,我正在用Mongoose创建一个简单的数据库,模型如下:用户、游戏和玩家。 因此,一个用户不包含或包含多个游戏。每个游戏都有一个玩家,每个玩家都指一个用户。如下所示(为了清晰起见,我简化了模式): 因此,现在在前端,我想向后端发送一份请愿书,为用户Joe(_id:11111)和Bob(_id:22222)创建一个新游戏,因此我向/api/games发送了一篇帖子,帖子的主

  • 我需要更新嵌套在我的用户文档中的一个字段,该字段包含一个part对象数组,以添加新的part。一个part对象如下所示: 所以这意味着$addToset对我的情况没有好处...现在我不知道该怎么办。

  • 我有一个mongodb集合的mongoose模式,我将其定义如下: 在数据库集合中,我当前有一个文档,它包含除以外的所有属性的值,用于测试目的。我有一个服务器endpoint,当被调用时,它应该发出一个PUT请求来更新文档并向sketches数组中添加一个对象: 在这个web服务中,我基本上试图通过用户名选择用户文档,用户名作为参数传递给url字符串,如下所示: 由于某种原因,当我尝试使用具有以下

  • 我将根据提供的键更新mongoose文档的一些字段。例如,当我们在JSON中呈现mongoose文档时。 和更新参数,如下所示。 当我这样运行mongoose api时。 它替换了整个地址对象,最终结果是 它只是替换地址字段,但我想只更新城市字段。这是理想的结果。 谢谢

  • 我正在尝试更新嵌套数组中的值,但无法使其工作。 我的对象是这样的 提前谢谢!

  • 本文向大家介绍MongoDB查询中如何更新嵌套文档,包括了MongoDB查询中如何更新嵌套文档的使用技巧和注意事项,需要的朋友参考一下 要更新嵌套文档,请使用update(),并在其中使用点号。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是更新嵌套文档的查询- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出-