Session: How to Delete Documents Using Index with LINQ Statment
To delete a large amount of documents answering certain criteria, we can use the DeleteByIndex
method from session.Advanced
Syntax
Operation DeleteByIndex<T, TIndexCreator>(Expression<Func<T, bool>> expression)
where TIndexCreator : AbstractIndexCreationTask, new();
Operation DeleteByIndex<T>(string indexName, Expression<Func<T, bool>> expression);
Parameters | Type | Description |
---|---|---|
indexName | string | name of an index to perform a query on |
expression | Expression<Func<T, bool>> | The LINQ expression (the query that will be performed) |
Return Value | |
---|---|
Operation | Object that allows waiting for an operation to complete. |
Remarks
Note
DeleteByIndex
can only be performed on a map index. Executing it on map-reduce index will lead to an exception.
The document will be removed from the server after the method is called and not after SaveChanges
.
Example
// remove all documents from the server where Name == Bob using Person/ByName index
var operation1 = session.Advanced.DeleteByIndex<Person>("Person/ByName", x => x.Name == "Bob");
operation1.WaitForCompletion();
//remove all documents from the server where Age > 35 using Person/ByAge index
var operation2 = session.Advanced.DeleteByIndex<Person, Person_ByAge>(x => x.Age < 35);
operation2.WaitForCompletion();