Sam*_*m S 2 c# linq lucene ravendb
我在RavenHQ中有以下索引
from doc in docs
let Tag = doc["@metadata"]["Raven-Entity-Name"]
where Tag != null && Tag=="Email"
select new { Tag, LastModified = (DateTime)doc["@metadata"]["LastModified"], DateAdded=doc.DateAdded };
Run Code Online (Sandbox Code Playgroud)
我也确实将DateAdded索引作为分析.我想写一个Lucene查询,其中包含where子句中少于date的条件.
我试过跟随,但它没有用.
Where("DateAdded: [NULL TO 2012-12-31").ToList()
Run Code Online (Sandbox Code Playgroud)
C#在where子句中提供日期的确切方式是什么.
谢谢.
最好的方法是使用Raven的API而不是自己构建查询:
var date = new DateTime(2012, 12, 31, 0, 0, 0, DateTimeKind.Utc);
session.Advanced.LuceneQuery<object>().WhereLessThan("LastModified", date);
Run Code Online (Sandbox Code Playgroud)
如果你必须自己做,就像这样:
session.Advanced.LuceneQuery<object>()
.Where("LastModified: {NULL TO 2012-12-31T00:00:00.0000000Z}")
Run Code Online (Sandbox Code Playgroud)
乌鸦使用Lucene的范围查询语法与配对的ISO8601日期时间格式到小数点后7位,如通过提供往返格式是从与获得dateTime.ToString("o").
请注意,您说"小于"所以我使用了专用括号{ TO }.如果您想要"小于或等于",那么您将使用包容性括号[ TO ].
如果您包含结束]字符,那么您在问题中提供的查询将起作用.但是,它不会是你想要的,因为任何LastModified带有时间组件的条目都会在你指定的值之后下降.
另请注意,LastModified元数据存储为UTC.
| 归档时间: |
|
| 查看次数: |
2212 次 |
| 最近记录: |