我已经看过这两篇文章

Update MongoDB collection using $toLower



To loop through non associative array in mongoDB

但是那些并没有帮助我。

我有一个收集了一些这样的文件:

{
"_id": "58bda97de000ae205f77c6e0",

"artistName": "ABC",

"trackNames": [
"1A",
"1B",
"1C",
"1D"
],
}


我想将trackNames字段的所有值更改为小写。

{
    "_id": "58bda97de000ae205f77c6e0",

    "artistName": "ABC",

    "trackNames": [
    "1a",
    "1b",
    "1c",
    "1d"
    ],
    }


直到现在我都这样尝试:

db.artist.find().forEach(function(e) {
e.trackNames.forEach(function(i){
i=i.toLowerCase();
db.artist.save(e)})})


但是它不起作用。请帮忙。

最佳答案

i = i.toLowerCase()实际上并不更新对象。相反,您可以使用映射替换数组本身:

e.trackNames = e.trackNames.map(function (trackName) {
  return trackName.toLowerCase();
});


这将更新原始对象上的trackNames数组,然后可以保存它。

09-12 02:13