public bool DeleteDocument(string key, Guid?etag, out JObject metadata) { var docPos = Mutator.Documents.FindValue(key); metadata = null; if (docPos == null) { return(false); } var existingEtag = EnsureValidEtag(docPos.Value, etag); Mutator.DecrementDocumentCount(); Reader.Position = docPos.Value; ConsumeKeyFromFile(); metadata = JObject.Load(new BsonReader(Reader)); var docId = metadata.Value <int>("@docId"); Mutator.DocumentsById.Remove(docId); Mutator.DocumentsByEtag.Remove(new Guid(existingEtag).ToByteArray()); Mutator.Documents.Remove(key); return(true); }