You are currently browsing legacy 3.5 version of documentation. Click here to switch to the newest 5.1 version.

We can help you with migration to the latest RavenDB

Contact Us Now
see on GitHub

Commands: Documents: Stream

StreamDocs is used to stream documents which match chosen criteria from a database.


IEnumerator<RavenJObject> StreamDocs(
    Etag fromEtag = null,
    string startsWith = null,
    string matches = null,
    int start = 0,
    int pageSize = int.MaxValue,
    string exclude = null,
    RavenPagingInformation pagingInformation = null,
    string skipAfter = null,
    string transformer = null,
    Dictionary<string, RavenJToken> transformerParameters = null);
fromEtag Etag ETag of a document from which stream should start (mutually exclusive with 'startsWith')
startsWith string prefix for which documents should be streamed (mutually exclusive with 'fromEtag')
matches string pipe ('|') separated values for which document keys (after 'keyPrefix') should be matched ('?' any single character, '*' any characters)
start int number of documents that should be skipped
pageSize int maximum number of documents that will be retrieved
exclude int pipe ('|') separated values for which document keys (after 'keyPrefix') should not be matched ('?' any single character, '*' any characters)
pagingInformation RavenPagingInformation used to perform rapid pagination on a server side
skipAfter String skip document fetching until given key is found and return documents after that key (default: null)
transformer String name of transformer (default: null)
transformerParameters Dictionary<string, RavenJToken> parameters to pass to the transformer (default: null)

Example 1

IEnumerator<RavenJObject> enumerator = store.DatabaseCommands.StreamDocs(null, "products/");
while (enumerator.MoveNext())
    RavenJObject document = enumerator.Current;

Example 2

Using the following transformer:

private class SimpleTransformer : AbstractTransformerCreationTask
    public class Result
        public string Name { get; set; }

    public override TransformerDefinition CreateTransformerDefinition(bool prettify = true)
        return new TransformerDefinition
            Name = "SimpleTransformer",
            TransformResults = "from r in results select new { Name = Parameter(\"Name\") }"

StreamDocs using the SimpleTransformer defined above and one supplied parameter:

var transformer = new SimpleTransformer();

using (IEnumerator<RavenJObject> enumerator = store.DatabaseCommands.StreamDocs(startsWith: "people/", transformer: transformer.TransformerName, transformerParameters: new Dictionary<string, RavenJToken> {{"Name", "Bill"}}))
    while (enumerator.MoveNext())
        RavenJObject result = enumerator.Current;
        string name = result.Value<string>("Name");
        Assert.Equal("Bill", name); // Should be true