, если вы используете java 8, попробуйте это
Arrays.stream(e.getStackTrace())
.map(s->s.toString())
.collect(Collectors.joining("\n"));
, вы можете найти код для функции getStackTrace (), предоставленный Throwable.java как:
public StackTraceElement[] getStackTrace() {
return getOurStackTrace().clone();
}
и для StackTraceElement он предоставляет toString как:
public String toString() {
return getClassName() + "." + methodName +
(isNativeMethod() ? "(Native Method)" :
(fileName != null && lineNumber >= 0 ?
"(" + fileName + ":" + lineNumber + ")" :
(fileName != null ? "("+fileName+")" : "(Unknown Source)")));
}
Так что просто присоедините StackTraceElement к «\n»
MongoDB не поддерживает сложные многодокументные транзакции. Если это то, что вам абсолютно необходимо, вероятно, вам не подходит.
Однако в большинстве случаев мы обнаружили, что сложные транзакции не являются обязательными. Все операции в MongoDB являются атомарными в одном документе, и мы поддерживаем удобные модификаторы обновления , которые позволяют легко (и быстро) реализовать множество операций, требующих транзакции.
Это правда, что MongoDB не поддерживает транзакции из коробки, но вы можете реализовать оптимистичные транзакции самостоятельно. Они прекрасно подходят единице работы. Я написал пример Java и некоторые пояснения к GitHub , чтобы вы могли легко повторить в C #.
MongoDB 4.0 добавит поддержку многодокументных транзакций.
Вы можете использовать вместо MongoDb TokuMX.
http://www.tokutek.com/products/tokumx-for-mongodb/
TokuMXTM - это высокопроизводительный дистрибутив MongoDB с открытым исходным кодом, который имеет значительно улучшена производительность и эффективность работы по сравнению с базовой MongoDB. TokuMX является заменой MongoDB и предлагает 20-кратное повышение производительности, уменьшение размера базы данных на 90% и поддержку транзакций ACID с MVCC.
Да, существует несколько способов применить шаблон единицы работы для MongoDB в зависимости от версии базы данных.
До MongoDB 4.0 не было поддержки транзакций ACID с несколькими документами. Затем разработчики использовали «протокол двухфазного принятия» (единая база данных) и «протокол трехфазного принятия» (неблокирование в распределенных базах данных) для создания собственного уровня транзакций, который обеспечивал согласованность данных , но не выполнение «все или ничего» для сохранения целостности данных. Таким образом, это снизило производительность.
В MongoDB 4.0 добавлена поддержка многодокументных транзакций ACID.
Источники:
https://en.wikipedia.org/wiki/Two-phase_commit_protocol
https://en.wikipedia.org / wiki / Three-phase_commit_protocol