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个价格点,那么在客户端进行过滤是没用的.
非常感谢我能得到的任何帮助.
非常感谢你提前:)
如果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命名空间中.)
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |