2010-07-31 14 views
5

Qui è un documento nel negozio:RavenDB. Come caricare un documento con solo 5 elementi dalla raccolta interna?

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

E 'facile da caricare questo documento, con o senza dipendenti di raccolta, ma come caricare solo una parte della raccolta interna? Ad esempio, i primi 5 articoli:

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

risposta

6

Non direttamente, non.

Che cosa si può fare è definire il seguente indice:

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

si può quindi interrogare l'indice per i primi cinque dipendenti

0

È possibile utilizzare la funzione diretta Proiezioni di RavenDB. Inserisci questa query nella funzione TransformResults dell'indice: Presumo che il nome del documento sia Company.

TransformResults = (database, companies) => from c in companies 
             select new {Company=c,Employees=c.Employees.Take(5)};