我已经看过这两篇文章
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数组,然后可以保存它。