描述清楚问题,才能有信心解决问题

当我被问到“我知道怎么做吗?”我有些迟疑,并回答道“我来找找”。

在速度和效率的时代,快速解决问题的能力,有一方面是经验,或者说是知识积累,另一方面是“解决问题的方式方法”。

解决问题其实只是一个方面,快速检验了知识积累,同时,也考察了解决问题的能力。

解决问题的能力,体现在对问题的分析上面,首先分析问题的第一点就是“描述清楚问题是什么”。

我遇到的问题是——替换mongodb中一个文档的集合属性。具体来说,有这样一个大致结构的文档。

{
    "_id": ObjectId("61eaa8def7310000ec007963"),
    "code": 101,
    "name": "test1",
    "validTypes": [
        "WORKDAY",
        "WEEKEND",
        "HOLIDAY"
    ],
    "notes": "haha1"
}

我需要替换validTypes数组中的”WEEKEND”为”REST”.

在解决这个问题时,我分别做了5次问题描述,体现在我用Google搜索的时候。

  • mongodb 查询对象的集合属性
  • mongodb 更新某个字段中的属性
  • mongodb 替换某个集合属性的 成员
  • mongodb 集合属性查询
  • mongodb 数组元素替换

最后一次,比较接近问题的本身。所以在看了一篇Blog——MongoDB 数据的替换方法详解

然后看了官网和两篇比较“靠谱“Blog之后,这两篇Blog比较实用,我就知道问题的解决方法,并尝试了一下,果然成功了。

其中受到第一篇Blog和”印象中的示例代码“影响,差点就走偏了。

官网是:

(1)Query Your Data

https://docs.mongodb.com/compass/current/query/filter/

(2)$elemMatch (query)

https://docs.mongodb.com/manual/reference/operator/query/elemMatch/

(3)Update Operators

https://docs.mongodb.com/manual/reference/operator/update/

一篇靠谱的Blog是——mongodb数组更新运算符($、$[]、$[<identifier>])

另外一篇是——使MongoDB用字符串替换单个数组值?

我就是在看完上面最后一个Blog之后尝试的,果然,一看方法简单可行,我就动手了,果然成了。

db.getCollection("ot-rules").updateMany(
    {
        "validTypes": "WEEKEND"
    },
    {
        "$set": {
            "validTypes.$": "REST"
        }
    }
)
;
				
				
db.getCollection("ot-rules").find({}).pretty();

上面有第一点就是理解操作函数,比如$.set ,还有.$,这些知识是官网可以获取的。

记在最后,别人可以做的,我为什么不能做。同样风华正茂,怎能甘拜下风?