如何在MongoDB中存储一个具有以$开头的键的对象

Jon*_*Ong 3 mongodb

我想保存对文档所做的更改.最简单的方法是存储对文档所做的实际更改.我的意思是说:

var changes = {
  $set: {
    text: 'Some text.'
  }
}

db.posts.update({
  _id: _id
}, changes)

db.changes.insert({
  postid: _id,
  changes: changes
})
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误(有充分的理由):

Error: key $set must not start with '$'
Run Code Online (Sandbox Code Playgroud)

存储更改的最简单方法是什么?

或许我正在接近问题并且你有一个更好的解决方案.我希望用户能够看到人们对任何帖子或事实上的任何变化的日志.我不打算每次改变都有功能.编辑文本只是对文档进行更改的众多方法之一.

小智 5

另一个有许多保留的选项是将更改日志存储为json字符串.当然,内容不会轻易搜索,但您可以保留将原始数据存储为字符串并在检索时解码json的简单性.如果您只是存储更改日志,则此方法可能有效.

db.changes.insert({postid:_id,changes:JSON.stringify(changes)})