Javascript 数组中的MongoDB更新项

Javascript 数组中的MongoDB更新项,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我需要在数组中的某个位置(索引)编辑一个项,而不必为每个项添加索引 //集合中的记录 常数数据={ 图书馆:“书店”, 书籍:['bookA','bookB','bookC'] } 我只想更改books数组中索引1处的项 我正在尝试以下方法,但不起作用 return Record.updateOne( { 视频识别码, }, { $set:{ “书[1]:“书H” }, }, (错误,数据)=>{ 如果(错误){ 控制台日志(err); } 返回数据; } ); 有什么想法吗?只要您需要始终

我需要在数组中的某个位置(索引)编辑一个项,而不必为每个项添加索引

//集合中的记录
常数数据={
图书馆:“书店”,
书籍:['bookA','bookB','bookC']
}
我只想更改
books
数组中索引
1
处的项

我正在尝试以下方法,但不起作用

return Record.updateOne(
{
视频识别码,
},
{
$set:{
“书[1]:“书H”
},
},
(错误,数据)=>{
如果(错误){
控制台日志(err);
}
返回数据;
}
);

有什么想法吗?

只要您需要始终更新数组中的第二个元素,就可以使用点表示法

您的查询应该是这样的

return Record.updateOne(
  { video_id }, // filter part
  {
    $set: { // update part
      "books.1": 'Book H'
    },
  },
  (err, data) => { // call back function
    if (err) {
      console.log(err);
    }
    return data;
  }
);

希望它有帮助,只要您需要始终更新数组中的第二个元素,这样您就可以使用点表示法

您的查询应该是这样的

return Record.updateOne(
  { video_id }, // filter part
  {
    $set: { // update part
      "books.1": 'Book H'
    },
  },
  (err, data) => { // call back function
    if (err) {
      console.log(err);
    }
    return data;
  }
);

希望它有帮助

我在纯MongoDB查询中演示,没有不必要的细节,这样每个人都可以轻松理解

db.getCollection(“库”).update({/*您的过滤器*/}{
$set:{
“第1册”:“H册”
}
})

我在纯MongoDB查询中演示,没有不必要的细节,因此每个人都可以轻松理解

db.getCollection(“库”).update({/*您的过滤器*/}{
$set:{
“第1册”:“H册”
}
})

谢谢@denizkanmaz,但是如果数组中有另一个嵌套对象呢?你的问题不是这样:)。显然,你已经在另一条评论中得到了答案。谢谢@denizkanmaz,但是如果我在数组中有另一个嵌套对象呢?你的问题不是这样:)。显然,你已经在另一条评论中得到了答案。谢谢@Mohammed Yousry如果我有另一个嵌套数组而不是字符串会怎么样?如果你想更新index=1处的数组元素,但是这个元素是数组,并且你想更新index=2处的这个内部数组元素,你可以使用相同的逻辑,然后更新部分将如下
'books.1.2':'Book H'
如果您指的是对象数组,而不是字符串数组,类似于
books:[{name:'Book A',author:'author 1'},{name:'Book B,author:'author 2'},{name:'Book C',author:'author'}]
,并且您希望更新索引=1处的数组元素,假设您想更新图书名称,那么查询将是
'books.1.name':'book H'
,希望现在就清楚了!谢谢你@Mohammed Yousry成功了!您知道是否可以通过动态或编程方式传递密钥吗?例如,我试图通过插值
const key=content.${highlights[0].node}.children.${highlights[0].children}
来传递创建键,然后尝试将其用作
[key]:value
。但是不识别keyThank you@Mohammed Yousry如果我有另一个嵌套数组而不是字符串会发生什么?如果你想更新索引为1的数组元素,但这个元素是数组,你想更新索引为2的这个内部数组元素,你可以使用相同的逻辑,然后更新部分将如下
'books.1.2':'Book H'
如果您指的是对象数组,而不是字符串数组,类似于
books:[{name:'Book A',author:'author 1'},{name:'Book B,author:'author 2'},{name:'Book C',author:'author'}]
,并且您希望更新索引=1处的数组元素,假设您想更新图书名称,那么查询将是
'books.1.name':'book H'
,希望现在就清楚了!谢谢你@Mohammed Yousry成功了!您知道是否可以通过动态或编程方式传递密钥吗?例如,我试图通过插值
const key=content.${highlights[0].node}.children.${highlights[0].children}
来传递创建键,然后尝试将其用作
[key]:value
。但不认识关键是什么