我想保存对文档所做的更改。最简单的方法是存储对文档所做的实际更改。我的意思是:
var changes = {
$set: {
text: 'Some text.'
}
}
db.posts.update({
_id: _id
}, changes)
db.changes.insert({
postid: _id,
changes: changes
})
但是我收到错误(有充分理由):
Error: key $set must not start with '$'
存储更改的最简单方法是什么?
或许我正在接近问题并且你有一个更好的解决方案。我希望用户能够看到人们对任何帖子或事实上的任何变化的日志。我不打算每次改变都有功能。编辑文本只是对文档进行更改的众多方法之一。
答案 0 :(得分:5)
另一个有许多保留的选项是将更改日志存储为json字符串。当然,内容不会轻易搜索,但您可以保留将原始数据存储为字符串并在检索时解码json的简单性。如果您只是存储更改日志,则此方法可能有效。
db.changes.insert({ postid:_id, 更改:JSON.stringify(更改) })
答案 1 :(得分:1)
这是MongoDB中的限制。由于查询必须如何工作,因此某些保留字符中的一个为$
。使用运算符时,集合中的文档与用于更新的文档之间会存在歧义。
我建议删除$
符号。我会用这些词代替你试图使用的运算符: