RavenDB获取ID列表?

时间:2013-11-02 20:47:04

标签: ravendb

在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个价格点,那么在客户端进行过滤是没用的。

非常感谢我能得到的任何帮助。

非常感谢您提前:))

1 个答案:

答案 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命名空间。)