在RavenDB中
我需要根据文档的ID获取文档的最新插入,并按列表中的ID进行过滤
即:
List<Entity> GetLastByIds(List<int> ids);
实体类似于:
class Entity
{
int id; //Unique identifier for the category the price applies to.
int Price; //Changes with time
DateTime Timestamp; //DateTime.UtcNow
}
所以,如果我插入以下内容:
session.Store(new Entity{Id = 1, Price = 12.5});
session.Store(new Entity{Id = 1, Price = 7.2});
session.Store(new Entity{Id = 1, Price = 10.3});
session.Store(new Entity{Id = 2, Price = 50});
session.Store(new Entity{Id = 3, Price = 34});
...
如何获取ID 1和3的最新价格?
我让Map / Reduce工作正常,给我最新的每个ID,这是我正在努力的过滤。 我想在Raven中进行过滤,因为如果所有ID总共超过1024个价格点,那么在客户端进行过滤是没用的。
非常感谢我能得到的任何帮助。
非常感谢您提前:))
答案 0 :(得分:5)
如果Id
应该代表该类别,那么您应该将其称为CategoryId
。通过调用属性Id
,您将了解Raven的约定,它应该被视为该文档的主键。您无法保存同一文档的多个版本。它只会覆盖最后一个版本。
假设您已正确构建索引,您只需查询它:
using Raven.Client.Linq;
...
var categoryIds = new[] {1, 3}; // whatever
var results = session.Query<Entity, YourIndex>()
.Where(x=> x.CategoryId.In(categoryIds));
(.In
扩展方法位于Raven.Client.Linq
命名空间。)