問題タブ [embedded-documents]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Springデータを使用して埋め込みエンティティをmongodbに挿入できません
だから私はいくつかのデータを追加したいのですが、
通常のオブジェクトだけを挿入しようとすると機能しますが、1対1の関係のドキュメントを埋め込むために他のオブジェクトを含むオブジェクトを試してみると、コレクションが空であることがわかります
春の設定の場合、それはXMLです
データを保存したいクラス
モデル/エンティティ
誰でもそれについて私を助けることができますか
python - 最も内側のリスト内の一意性が尊重される場合にのみ、埋め込みドキュメントのリスト内のドキュメントの ListField を効率的に更新します
ドキュメントの既存の構造で解決する方法がわからないというシナリオに出くわしました。以下に示すように、リファクタリングでこの問題を明らかに解決できますが、これが可能な限り最も効率的に解決され、同じ構造を尊重する方法に興味があります。
この質問は、MongoEngine の ListField の EmbeddedDocument をアトミック更新する方法とは異なることに注意してください。
次のモデルがあるとします。
私がやりたいのは、スキャン フィールドのすべての要素 (スキャン埋め込みドキュメントのリスト) のドキュメント リストが一意である場合にのみ、ScanSettings オブジェクトを挿入することです。一意とは、リスト全体ではなく、データベース レベルのリスト内のすべての要素を意味します。これは簡単です。
簡単に言うと、ScanSetting を挿入するときに、スキャン リストのいずれかの要素に、ドキュメントのリストが重複しているスキャンのインスタンスがある場合、そのような挿入は行われません。データベースレベルでの一意性を意味し、既存のレコードがあればそれを考慮に入れます。
Mongo が同じドキュメント内のリストのすべての要素で一意性をサポートしていないことを考えると、2 つの解決策が見つかりました。
オプション A
「スキーマ」をリファクタリングし、Scans コレクションを Embedded ドキュメントではなく Document から継承させ、ScanSettings の scans フィールドを ReferenceFields の ListField から Scans ドキュメントに変更します。次に、演算子「add_to_set」とオプション「upsert = True」を使用して「Updates」を使用して最初にスキャンを保存するだけでよいので簡単です。次に、操作が承認されたら、ScanSettings を保存します。+ 1 クエリを挿入するには、スキャン インスタンスの数が必要になります。
オプション B 同じ「スキーマ」を保持しますが、どういうわけかスキャンの埋め込みドキュメントに一意の ID を生成します。次に、空でないスキャン フィールドを使用してスキャン設定を挿入する前に、既存のレコードを取得して、取得したレコードと挿入するレコードの間に重複するドキュメントの ObjectId があるかどうかを確認します。つまり、MogoneEngine/Mongodb を使用するのではなく、Python を使用して一意性をチェックします。挿入するスキャン インスタンスの数 x 2 (読み取り + add_set_operator による更新) + 1 つの ScanSettings 保存が必要です。
オプション C 一意性を無視します。私のモデルがどのように構築されるかを考えると、重複がないか、重複があるとしても無視できると確信しています。次に、読み取り時に重複を処理します。私のようにリレーショナル データベースから来ている人にとって、このソリューションは難航しているように感じます。
私はMongoの初心者なので、コメントに感謝します。ありがとう。
PS: 最新の MongoEngine と無料の Mongodb を使用しています。
よろしくお願いします。