wangjianweiwei / blog

点滴记录
1 stars 0 forks source link

MongoDB中的“$”常用指南 #4

Open wangjianweiwei opened 4 years ago

wangjianweiwei commented 4 years ago

在使用Mongo这种非关系性数据库时,我最大的感觉就是可以存储结构性数据,类似json这种数据类型,公司有个老项目中使用MySQL的TEXT数据类型存储过json,当这个json串很大时,那个效率真的是............(省略N多字) 现在这种结构非常不确定的数据我一般都会存到Mongo中,当然了这也是看业务的,还有可能是Redis,MenCache等其他非关系型数据库。 一般当数据结构比较深时,这个数据的查询,过滤, 修改就会有一定的困难,尤其是对Mongo的认识还很浅时,你可能经常会遇到这种情况: 这个TMSB数据库,改个数据这么费劲, 还得全读出来,改一下,在保存进去

现在这个问题很快就能解决了 比如数据库中现有的数据是这个样的

{
    "_id": "5a77e55e-a3bb-4aae-92a7-371112e1357a",
    "dataset": [
        {"sn": 1, "size": 100},
        {"sn": 2, "size": 200},
        {"sn": 3, "size": 300},
        {"sn": 4, "size": 400},
    ]
}

有个需求是这样的 把_id5a77e55e-a3bb-4aae-92a7-371112e1357a为的dataset里面sn2size改成888(有点长哈)

我是这样实现的

from pymongo import MongoClient

table = MongoClient()["test"]["test"]
table.update({"_id": "5a77e55e-a3bb-4aae-92a7-371112e1357a", "dataset.sn": 2}, {"$set": {"dataset.$.size": 888}})

未完待续............