次のユースケースがMongoDB3.4で実行可能かどうかを判断しようとしています。次のようなスキーマを持つドキュメントを含むコレクションがあります。
{
"_id": ObjectId("..."),
"data": {
"fname": "John",
"lname": "Doe"
},
"history": []
}
data
フィールドは、エンティティの現在の状態を保持するためのものであり、history
配列は、それの(最大ドキュメントサイズの会計処理と目的を照会するため)最新バージョンを保持するためのものです。
アプリケーションロジックから更新操作が発行されたら$push
、data
フィールドをhistory
配列に入れて、エンティティの新しい状態に置き換えたいと思います。私はMongoDBのドキュメントでこれについて何も見つけることができませんでした。私が見つけたすべての質問はSO
、既存のフィールドの値を「移動」するのではなく、まったく新しいオブジェクトを配列にプッシュすることに関するものです。$push
このような操作でドキュメントフィールドを参照することは可能ですか?
db.collection.update({"_id": "1234"}, {"$set": {"data": {"data-value"}}}, {"$push": {"history": {"history-value"}})
このように書くと、値が自動的に履歴にプッシュされ、データが現在の状態に変更されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加