3

ドキュメントに加えた変更を保存したい。これを行う最も簡単な方法は、ドキュメントに加えられた実際の変更を保存することです。私が意味したのは:

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 '$'

変更を保存する最も簡単な方法は何ですか?

または、おそらく私は問題に間違ってアプローチしていて、あなたはより良い解決策を持っています。ユーザーが投稿や実際には何に対しても行った変更のログを表示できるようにしたいと思います。変更のたびに関数を作成するつもりはありません。テキストの編集は、ドキュメントに変更を加える多くの方法の1つにすぎません。

4

2 に答える 2

5

多くの予約がある別のオプションは、変更ログをjson文字列として保存することです。もちろん、コンテンツを簡単に検索することはできませんが、元のデータを文字列として保存し、取得時にjsonをデコードするという単純さを維持できます。単に変更ログを保存している場合は、このアプローチが機能する可能性があります。

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

于 2014-02-10T21:20:32.063 に答える
1

これはMongoDB内の制限です。特定の予約文字がありますが、そのうちの1つは、$クエリがどのように機能する必要があるかによるものです。演算子を使用する場合、コレクション内のドキュメントと更新に使用されるドキュメントの間にあいまいさがあります。

$シンボルを取り除くことをお勧めします。代わりに、使用しようとしている演算子の代わりに次の単語を使用します。

  • 作成
  • セットする
  • 消去
于 2012-10-05T07:08:46.190 に答える