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
。但不认识关键是什么