私は冪等級にしたいREST APIを書いています。私はネストされた配列とidempotencyと今のところ苦労しています。 product_notes
の項目を1回のアトミック操作で更新したいと思います。それはMongoDBでも可能ですか?あるいは、代わりにオブジェクトとして配列を格納する必要がありますか(この記事の最後に私の例を見てください)?たとえば、upsert
の動作を模倣することは可能ですが、配列は可能ですか?MongoDBのネストされた配列の等価性は可能ですか?
{
username: "test01",
product_notes: [
{ product_id: ObjectID("123"), note: "My comment!" },
{ product_id: ObjectID("124"), note: "My other comment" } ]
}
私はちょうどupdateコマンドと$set
が、何product_id
はまだ配列にない場合に使用する既存のproduct_nodeのためのメモを更新する場合。それから私はupsert
をしたいと思いますが、私が知っている限り、それは埋め込みドキュメント/配列演算子の一部ではありません。 、この問題を解決し、それを冪等にする
一つの方法は、ただproduct_id
とusername
の間で関係する新しいコレクションproduct_notes
を追加することです。 これは、ドキュメントベースのデータベースの目的に違反しているように感じます。
別の解決策:このについての何かを持っている私よりも多くの経験を積んビットが共有する
{
username: "test01",
product_notes: {
"123": { product_id: ObjectID("123"), note: "My comment!" },
"124": { product_id: ObjectID("124"), note: "My other comment" } }
}
誰ですか?
ユーザーはどのくらいのコメントを保存できますか?モンゴバージョン? – profesor79
私はあなたが目指しているものを知っていると思います。しかし、スキーマ設計を気にする必要はありません。モデルを作成する正しい方法であるかどうかは気にしないでください。私はそれが10〜100個の製品の間にあると思います。示されたコードは正確なプロジェクトではなく、問題がどこにあるのかの例です。私はすでに独自のコレクション内のproduct_notesで解決策を作っています...うまくいきます。 –