gpt4 book ai didi

mongodb - 在 Sitecore xDB 中存储自定义临时数据

转载 作者:可可西里 更新时间:2023-11-01 09:14:59 25 4
gpt4 key购买 nike

我正在使用启用了 xDB (MongoDB) 的 Sitecore 8.1。我想将访问用户的用户角色存储在 xDB 中,这样我就可以在我的报告中汇总这些数据。这些角色会随着时间的推移而改变,因此一个用户可能在某个时间点拥有一组角色,而在稍后的时间点拥有另一组角色。

我可以将这些用户角色作为自定义方面存储在 Contact 实体上,但由于它们可能会随着用户的访问而改变,如果我更新数据,我将丢失历史数据每次用户登录时都会出现在这个方面(fx。在某些给定的访问中,我将无法分辨给定用户具有哪些角色)。

相反,我可以为我的分面数据创建自定义 IElement,并存储角色和时间戳,说明给定角色的注册时间,但在报告期间可能难以处理此模型阶段,每次生成报告时,我都需要根据时间戳将交互数据与角色数据连接起来。

是否可以将这些自定义数据存储在 xDB 中,而不是 Contact 集合中?我可以将自定义数据存储在 Interactions 集合中吗?有一个名为 Tracker.Current.Session.Interaction.CustomValues 的属性,这听起来像是我需要的,但如果我在此处存储数据,我是否能够对数据执行适当的聚合/报告?还有其他我没有想到的方法吗?

最佳答案

自定义值

是的,CustomValues 字典就是我在您的案例中使用的字典。该字典将作为每次交互的嵌套文档序列化到 MongoDB(除非字典为空)。

另请注意,由于 CustomValues 是基类 Sitecore.Analytics.Model.Entity 的成员,因此该字典可用于 xDB 的许多其他数据类。例如,您可以将自定义值存储在 PageDataPageEventData 对象中。

由于 CustomValues 接受任何类的对象,您的自定义数据类需要一些额外的东西才能成功保存到 MongoDB 并随后从 MongoDB 加载:

  1. 必须标记为[Serializable]
  2. 需要像这样在MongoDB驱动中注册:

    using Sitecore.Analytics.Data.DataAccess.MongoDb;

    // [...]

    MongoDbObjectMapper.Instance.RegisterModelExtension<YourCustomClassName>();

    这只需要在每个应用程序生命周期内完成一次 - 例如,在 initialize 流水线处理器中。

您自己的存储空间

当然,您不必使用 Sitecore 的 API 来存储您的自定义数据。因此,另一种方法是手动将数据保存到自定义 MongoDB 集合或 SQL 表中。然后,您可以在聚合处理器中读取该数据,通过当前处理的交互的 ID 找到它。

这种方法的好处是您可以决定数据的存储位置和方式。缺点是实现和维护此数据存储的额外工作。

关于mongodb - 在 Sitecore xDB 中存储自定义临时数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38057754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com