sql >> データベース >  >> NoSQL >> MongoDB

セッションがフラッシュされた後も、Sitecoreの連絡先ファセットにアクセスできますか?

    たくさんのデバッグ、いじり、テストを行った後、私はついにこれを理解しました。私の問題は、mongoへの書き込みではなく、一度書き込まれた後のmongoの読み取りにありました。

    サイトコアのドキュメントは(いつものように)これの動作のかなり基本的な部分を完全に見逃しているようです。 記載されているドキュメントの詳細

    わかりました、これは非常に誤解を招く恐れがあります。このEnsureAttributeとは ファセットのデータをmongoから現在のクラスにロードするようです。 すべてのプロパティに対してこれを行わない場合 あなたのファセットでは、mongoDbからの値は設定されません! これは私の間違いでした。クラスのすべてのプロパティを「保証」していませんでした。

    だから何が起こっていたのか、

    • データをファセットに入れます
    • ファセットデータはセッションに保持され、データを確認したり、アクセスしたり、変更したりすることができます。
    • データは最終的にmongoにフラッシュされます(必要な場合はxDb)
    • ユーザーが戻ると、システムはそれらを正しく認識します(ユーザーを特定する必要はありませんSC_ANALYTICS_GLOBAL_COOKIE あなたのためにこれを行います)
    • ただし、データを「保証」しない限り、データはロードされません(mongoからセッションに戻ります)。

    したがって、EnsureAttribute 「値型を宣言する」 (これは私の意見では完全に間違っています)mongodbから現在のSessionにデータをロードします 。



    1. クライアント側のドキュメントでフィルターをテストする

    2. MongoDB:自動生成されたObjectIDの代わりに特定のIDを持つドキュメントを挿入します

    3. ValueError:<解凍するには値が多すぎます>

    4. redis:dump.rdbのバックアップ