MongoDB如何通过索引替换数组项
问题的原因是想要通过索引来替换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]来解决,以确保只传递一个值(新值)的数组。