【问题标题】:How do I query Sitecore items by first version created date?如何按第一个版本创建日期查询 Sitecore 项目?
【发布时间】:2013-04-26 11:00:26
【问题描述】:

编写 XPath 或 Sitecore 查询/快速查询来获取日期范围内的所有项目非常容易:

例如

/sitecore/content/*[@__created>='20130301T000000' and @__created<'20130427T000000']

但是,这种查询只查看项目的最新版本,因此似乎不可能找到实际的项目的 created 日期(不是版本的 created 日期)。

我可以编写一些 C# 代码来进行查询,但这需要先检索 我的数据库中每个项目的版本 1,然后我才能在 created 日期进行过滤。这将是令人难以置信的缓慢。

是否可以使用 XPath/Query notation/Fast?如果没有,有什么方法可以快速完成吗?

【问题讨论】:

  • 为什么需要获取项目(版本 1)的创建日期(可能还有其他方式)?你确定这会在现场环境中工作吗? (据我所知,Web 数据库只有 1 个版本 - 最新版本)此外,您不能指望完全检索版本 1 - 它可能在某个时候已被删除。如果您确实找到了解决方案,请确保选择最低版本号。
  • @Trayek 这将用于维护我们的主数据库 - 实时网站不需要它。我们有各种运行脚本来帮助我们维护和分析我们的内容。最好调用最低版本号,而不是期望版本 1。谢谢。

标签: xpath sitecore


【解决方案1】:

我想到了一些可行的方法:
创建一个新字段,您的所有项目都将获得该字段。然后在此字段中,在创建项目(不是版本)时,您在其中输入日期时间。
当版本被删除时,这很好,因为所有版本都将具有该字段,具有完全相同的值。

唯一的问题是,您必须运行一次脚本来循环遍历现有项目,以使用每个项目的正确值填充字段。

然后您可以像现在一样使用您的 XPath 查询。

【讨论】:

  • 开箱即用! +1
  • 好吧,至少在 SO Your Answer 框中:-p
  • @trayek 有趣的想法,但就像你说的那样,它仍然需要某种 C# 脚本来填充数据(目的是搜索历史项目)。
  • 是的,它需要一些脚本 - 但它的缓慢部分只有一次(填充现有项目),其余部分您可以在 item:created 事件中处理。这样,您只需获取项目的 1 个版本(当前版本),而不是在运行脚本时获取最低版本。
猜你喜欢
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多