Raven.Database.DocumentDatabase.QueryDocumentIds C# (CSharp) Method

QueryDocumentIds() public method

public QueryDocumentIds ( string index, IndexQuery query, bool &stale ) : IEnumerable
index string
query IndexQuery
stale bool
return IEnumerable
		public IEnumerable<string> QueryDocumentIds(string index, IndexQuery query, out bool stale)
		{
			index = IndexDefinitionStorage.FixupIndexName(index);
			bool isStale = false;
			HashSet<string> loadedIds = null;
			TransactionalStorage.Batch(
				actions =>
				{
					isStale = actions.Staleness.IsIndexStale(index, query.Cutoff, null);
					var indexFailureInformation = actions.Indexing.GetFailureRate(index)
;
					if (indexFailureInformation.IsInvalidIndex)
					{
						throw new IndexDisabledException(indexFailureInformation);
					}
					loadedIds = new HashSet<string>(from queryResult in IndexStorage.Query(index, query, result => true, new FieldsToFetch(null, AggregationOperation.None, Raven.Abstractions.Data.Constants.DocumentIdFieldName), IndexQueryTriggers)
													select queryResult.Key);
				});
			stale = isStale;
			return loadedIds;
		}

Usage Example

        private JArray PerformBulkOperation(string index, IndexQuery indexQuery, bool allowStale, Func <string, TransactionInformation, object> batchOperation)
        {
            var array = new JArray();

            database.TransactionalStorage.Batch(actions =>
            {
                var bulkIndexQuery = new IndexQuery
                {
                    Query         = indexQuery.Query,
                    Start         = indexQuery.Start,
                    Cutoff        = indexQuery.Cutoff,
                    PageSize      = int.MaxValue,
                    FieldsToFetch = new[] { "__document_id" },
                    SortedFields  = indexQuery.SortedFields
                };

                bool stale;
                var queryResults = database.QueryDocumentIds(index, bulkIndexQuery, out stale);

                if (stale)
                {
                    if (allowStale == false)
                    {
                        throw new InvalidOperationException(
                            "Bulk operation cancelled because the index is stale and allowStale is false");
                    }
                }

                foreach (var documentId in queryResults)
                {
                    var result = batchOperation(documentId, transactionInformation);
                    array.Add(JObject.FromObject(result, new JsonSerializer {
                        Converters = { new JsonEnumConverter() }
                    }));
                }
            });
            return(array);
        }
All Usage Examples Of Raven.Database.DocumentDatabase::QueryDocumentIds