RavenDB。如何从内部收集只有5项加载的文件?加载、文件、RavenDB

2023-09-04 02:46:35 作者:帅痞

下面是在店里的文档:

  {
    名:冬眠犀牛,
    员工:
        {姓名:Ayende},
        {姓名:约翰},
        {姓名:鲍勃},
        {姓名:汤姆},
        {姓名:里},
        {姓名:条例},
        {姓名:泰德}
     ]
}
 

这是很容易加载该文件有或无的员工的集合,但如何加载内收集的一部分?例如,前5个项目:

  {
    名:冬眠犀牛,
    员工:
        {姓名:Ayende},
        {姓名:约翰},
        {姓名:鲍勃},
        {姓名:汤姆},
        {姓名:里}
     ]
}
 
RavenDB 基于Windows .NET平台的NoSQL数据库

解决方案

不是直接的,没有。

你可以做的就是定义如下指标:

从公司docs.Companies
从EMP在company.Employees
选择新{Compnany = company.Name,员工= EMP}

然后,您可以查询该指数前五员工

Here is a document in the store:

{
    "Name": "Hibernating Rhinos", 
    "Employees": [
        { "Name": "Ayende" },
        { "Name": "John" },
        { "Name": "Bob" },
        { "Name": "Tom" },
        { "Name": "Lane" },
        { "Name": "Bill" },
        { "Name": "Tad" }
     ]
}

It is easy to load this document with or without Employees collection, but how to load only part of inner collection? For instance, first 5 items:

{
    "Name": "Hibernating Rhinos", 
    "Employees": [
        { "Name": "Ayende" },
        { "Name": "John" },
        { "Name": "Bob" },
        { "Name": "Tom" },
        { "Name": "Lane" }
     ]
}

解决方案

Not directly, not.

What you can do is define the following index:

from company in docs.Companies
from emp in company.Employees
select new { Compnany = company.Name, Employee = emp }

You can then query the index for the first five employees