2013-04-26 30 views
1

编写XPath或Sitecore查询/快速查询以获取日期范围内的所有项目非常容易:如何通过第一个版本创建日期来查询Sitecore项目?

例如,

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

然而,这种类型的查询只着眼于某个项目的最新版本,因此这似乎是不可能找到实际项目的created日期(不是版本的created日期)。

我可以写一个位的C#代码来执行查询,但会涉及每一个项目第一取回1版在我的数据库然后我可以做created日期我的过滤器前。这将是令人难以置信的缓慢。

XPath/Query notation/Fast可以吗?如果不是的话,我有办法做到这一点吗?

+1

为什么您需要获取物品(版本1)创建时的日期(可能有其他方式)?你确定会在现场环境中工作吗? (据我所知,网络数据库只有1个版本 - 最新版本) 另外,你不能指望完全检索版本1 - 它可能在某个时候被删除。如果您确实找到了解决方案,请确保选择最低版本号。 – Trayek 2013-04-26 13:26:57

+0

@Trayek这将用于维护我们的主数据库 - 这不是实时网站所必需的。我们有各种脚本来帮助我们维护和分析我们的内容。好的呼吁最低版本号,而不是期待版本1.谢谢。 – theyetiman 2013-04-29 08:20:16

回答

3

我想到了可能有用的东西:
创建一个新的领域,你的所有物品都会得到。然后在这个字段中,创建一个项目(不是版本),在那里输入日期时间。
当版本被删除时,没关系,因为所有版本都会有该字段,并具有完全相同的值。

唯一的问题是,您必须运行一次脚本才能遍历现有项目,以便为每个项目填充正确的值。

然后,您可以使用与现在相同的XPath查询。

+0

开箱即用! +1 – 2013-04-26 16:06:35

+0

好吧,至少在SO_Your Answer_框内:-p – jammykam 2013-04-26 17:52:47

+0

@trayek有趣的想法,但就像你说它仍然需要某种C#脚本来填充数据(目的是搜索历史项目)。 – theyetiman 2013-04-29 08:32:24

相关问题