Вот общий подход, который применяется к числам, строкам, вложенным спискам и смешанным контейнерам.
Код
from collections import Iterable
def flatten(items):
"""Yield items from any nested iterable; see Reference."""
for x in items:
if isinstance(x, Iterable) and not isinstance(x, (str, bytes)):
for sub_x in flatten(x):
yield sub_x
else:
yield x
Примечание: в Python 3, yield from flatten(x)
может заменить for sub_x in flatten(x): yield sub_x
Демо
lst = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
list(flatten(lst)) # nested lists
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
mixed = [[1, [2]], (3, 4, {5, 6}, 7), 8, "9"] # numbers, strs, nested & mixed
list(flatten(mixed))
# [1, 2, 3, 4, 5, 6, 7, 8, '9']
Ссылка
Это потому, что Mongoose использует пул из 5 подключений (по умолчанию), которые используются во всем приложении. Для лучшей производительности лучше всего оставить их открытыми.
Вы можете изменить поведение по умолчанию с помощью параметра options на mongoose.connect
. Например:
mongoose.connect('localhost', 'test', { server: { poolSize: 3 }}); // Use 3 connections