如何在mongo db中删除数组中的逗号

时间:2016-11-08 04:40:01

标签: javascript node.js mongodb

我是mongodb的新手,我试图替换逗号,在我的收藏中我有很多对象

我的收藏如下

{
 "name":"Mobile",
 "ProCategories":[
                  {
                   "title":"Home,-electronics"
                   }
                 ]
}

如上所述,我的集合中有somany对象,现在我想删除所有对象中所有ProCategories数组的逗号。

iam尝试使用mongo shell中的js文件,如下面的

我的js文件:update.js

db.companies.find().skip(0).limit(100).forEach(function (doc) {

  var replacedTitle = doc.ProCat.filter(function (catTitle) {
    return catTitle.title.replace(',', "");
  })

  db.companies.update({
    _id: doc._id
  }, {
    $set: {
      "ProCat": [{
        "title": replacedTitle
      }]
    }
  });

})

现在在我的mongo shell我正在做这个

load("url\\to\\my js file\\path")

我尝试了不同的方式,但它不起作用 提前致谢

1 个答案:

答案 0 :(得分:1)

var replacedTitles = doc.ProCat.map(function (catTitle) {
    return { title: catTitle.title.replace(/,/g, "") };
})

filter删除数组中与条件不匹配的元素。这不是你想要做的。相反,map将一个函数应用于数组的每个元素,这是您想要做的。此外,您需要将每个替换的字符串包装在一个对象中,因为您需要一个对象数组,而不是一个字符串数组。 /,/g使得每个逗号都被移除,而不仅仅是第一个逗号。其余的应该像这样修改。

db.companies.update({
    _id: doc._id
}, {
    $set: {
        "ProCat": replacedTitles,
    }
});