首页 > 解决方案 > 如何更新 MongoDB 中字符串的子集?

问题描述

我想更新 monogdb 中字符串的以下子集

Collection: Paper
Field: URL

Document Current: 
   Name : House
   URL : www.home.com/300x300
Document Updated
   Name : House
   URL : www.home.com/600x600

我已经尝试过了,但它似乎不起作用:

db.Paper.find({Name:"House"}).forEach(function(e,i) {
    e.URL=e.URL.replace("300","600");
    db.Paper.save(e);
});

有任何想法吗?

标签: javascriptmongodbmongodb-querymongodb-update

解决方案


很简单,你必须在regex替换string函数的模式中使用,如下所示:

> db.Paper.find({Name:"House"}).forEach(function (e, i) {e.URL =  e.URL.replace(/300/g, "600"), printjson(e); db.Paper.save(e);}  )
{
    "_id" : ObjectId("5e016224a16075c5bd26fbe2"),
    "Name" : "House",
    "URL" : "www.home.com/600x600"
}
> db.Paper.find()
{ "_id" : ObjectId("5e016224a16075c5bd26fbe2"), "Name" : "House", "URL" : "www.home.com/600x600" }
>

所以 和 之间是有区别e.URL.replace("300", "600")e.URL.replace(/300/g, "600")。你应该自己弄清楚。

如需参考,请浏览:https ://flaviocopes.com/how-to-replace-all-occurrences-string-javascript/


推荐阅读