javascript - MongoDB, Mongoose ,更新数组内的对象

标签 javascript node.js mongodb mongoose

我有以下 MongoDB 模型:

const Relation = mongoose.model('Relation',{
  name :{
    type: String,
  },

  port:{
    type: Number,
  }, 
  services: { type : Array , "default" : [] }
});

每个端口都是每个文档的唯一编号。 集合可以具有以下值:

{
 "port":"116", //unique number
 "name":"xzy",
 services: [
        {"id":'1', "trust":"good"},
        {"id":'2', "trust":"bad"},
  ]
}

例如,对于“id”= 1 的对象,如何使“信任”值“坏”??

我假设我应该首先找到与端口号“116”匹配的集合,然后在服务数组中找到“id”为 1 的对象。 我怎样才能在 Mongoose 中做到这一点?

最佳答案

您可以使用 $ positional operator更新数组中的值

Relation.findOneAndUpdate(
  { "port": "116", "services.id": "1" },
  { "$set": { "services.$.trust": "bad" }}
)

关于javascript - MongoDB, Mongoose ,更新数组内的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54687734/

相关文章:

MongoDB:在键中使用特殊字符查询哈希

javascript - 调用 jQuery 插件而不指定任何元素

JavaScript 在数组中推送一个对象是什么——通过引用还是值?

javascript - NodeJS 检测修改过的文件

mysql - 带有 Sequelize 的 Node js。无法插入表格

php - MySQL : How to run heavy analytical query at real time

Mongodb 在单个聚合中使用多个组运算符

javascript - patch value 方法中通过 http 请求获取对象数组的问题

javascript - 单击外部菜单时如何删除切换类

node.js - 为什么会有这种不同的行为?