MongoDB如何通过索引替换数组项

11 浏览
0 Comments

MongoDB如何通过索引替换数组项

在MongoDB中,我如何使用索引来替换数组中特定索引处的值?假设电影评论的集合有一个包含单独数字的评分数组,我想要使用索引将其中一个数字替换为新的评分。

令数组为[1, 5, 3, 7]。

如何将5替换为4呢?再次强调,只能使用索引来实现。

0
0 Comments

问题的原因是想要通过索引来替换MongoDB中数组的元素。解决方法是使用$set运算符和点操作符来更新指定索引的数组元素。代码示例如下:

db.collection.update(
  { /*匹配查询条件*/ },
  { $set: { "array.1": 4 } }  // 数组索引,其中索引为0,1,2,...
)

更新后的文档如下:

{ 
    "_id" : 1, 
    "array" :  [1, 4, 3, 7]
}

另外,如果想要在键中拼接索引,可以使用反引号(`)来替代双引号("),并将对象键放在方括号中。代码示例如下:

{ _id: editedObj.id },
{ $set: { [`reviews.${index}`]: editedObj.reviews}}

在使用变量作为索引值时,需要使用反引号(`)而不是双引号(")。如果出现错误,可以参考Mozilla开发者文档中的使用反引号的说明。

最后,对于创建子数组的问题,可以通过将editedObj.reviews更改为editedObj.reviews[0]来解决,以确保只传递一个值(新值)的数组。

0