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
Operation DeleteByIndex<T, TIndexCreator>(Expression<Func<T, bool>> expression)
where TIndexCreator : AbstractIndexCreationTask, new();
Operation DeleteByIndex<T>(string indexName, Expression<Func<T, bool>> expression);
||name of an index to perform a query on
||The LINQ expression (the query that will be performed)
||Object that allows waiting for an operation to complete.
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
// 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");
//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);