RavenDB获取ID列表?

1 ravendb

在RavenDB中

我需要根据文档的ID获取文档的最新插入,并按列表中的ID进行过滤

即:

List<Entity> GetLastByIds(List<int> ids);
Run Code Online (Sandbox Code Playgroud)

该实体类似于:

class Entity
{
int id; //Unique identifier for the category the price applies to.
int Price; //Changes with time
DateTime Timestamp; //DateTime.UtcNow
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我插入以下内容:

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});
...
Run Code Online (Sandbox Code Playgroud)

如何获得ID 1和3的最新价格?

我有Map/Reduce工作正常,给我最新的每个ID,这是我正在努力的过滤.我想在Raven中进行过滤,因为如果所有ID总共超过1024个价格点,那么在客户端进行过滤是没用的.

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

非常感谢你提前:)

Mat*_*int 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));
Run Code Online (Sandbox Code Playgroud)

(.In扩展方法位于Raven.Client.Linq命名空间中.)