mongodb中插入数据的优化

我的 mongodb 有一个 user 的表,里面的结构和部分数据如下

_iduseridusernamesexclassheightupdated
mongodb自动生成的id637wondafclass231550

当更新这条数据的时候,希望不是直接在这条数据上更新,而是这条数据只更新 updated,将其更新成 1,同时插入一条新的数据,数据内容来自这条数据的旧的内容和更新后的内容,比如将 height 更新成 185,完成后表中的数据应该是这样的

_iduseridusernamesexclassheightupdated
mongodb自动生成的id637wondafclass231551
mongodb自动生成的id637wondafclass231850

我现在用的解决方案是

  1. 先将旧数据的 updated 更新成 1
  2. 将这条旧数据中没有更新的数据读出来,然后和新数据一同插入到表中

过程大致是这样的

await db.user.update({userid:userid},{$set:{updated:1}})
let olddb = db.user.find({userid:userid})
await db.user.insert({
    username: olddb.username,
    height: 185
})

这样的情况该如何优化呢?多谢

我觉得这

阅读 1.5k
1 个回答

一个问题,update=1的这条记录你留着干什么用?没用了直接扔到别的表去不就行了吗,在这儿添什么乱。本来大家都用日志类的手段处理这件事没毛病的,你这是把历史记录和当前数据混合存放了然后还想优化...

不管处于什么原因,当数据变化后如果数据的性质变了就应该放到这种数据该去的地方。虽然你列出的字段不多,但是大致是学生信息之类的,无非是

  1. 当前信息,热数据
  2. 当前信息录错了,修改要留记录,属于日志
  3. 历史信息,反应数据的连续变化

别想用一张表解决所有问题,自然效率就上去了,空间换时间是有道理的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题