Еще один полезный способ:
db.collection.aggregate([
{$group: {
_id: {
overallTime: {
$dateToString: { format: "%Y-%m-%dT%H", date: "$created_at" }
},
interval: { $trunc: { $divide: [{ $minute: "$created_at" }, 15 ]}}
},
}},
])
И проще в секундах min , hour , day :
var format = "%Y-%m-%dT%H:%M"; // 1 min
var format = "%Y-%m-%dT%H"; // 1 hour
var format = "%Y-%m-%d"; // 1 day
db.collection.aggregate([
{$group: {
_id: { $dateToString: { format: format, date: "$created_at" } },
}},
])
Вам не нужен обработчик для каждого элемента в массиве. Все, что вам нужно, это иметь один обработчик, которому вы передаете идентификатор, который можно получить из события, если вы добавите идентификатор в элемент li
function ItemList({items}) {
const [isDropdownExpanded, setIsDropdownExpanded] = useState(null);
const itemClickHandlers = useCallback((e) => {
const id = e.currentTarget.id;
setIsDropdownExpanded(prev => (prev != id ? id: null));
}, [])
return (
<ul>
{items.map(item =>
<li key={item.id} id={item.id} onClick={itemClickHandler}>
<Item name={item.name} isDropdownExpanded={isDropdownExpanded === item.id}/>
</li>
)}
</ul>
);
}
std::exception_ptr e; try { /*try block*/ } catch (...) { e = std::current_exception(); } /*finally block*/ if (e) std::rethrow_exception(e);
– sethobrien 23 March 2015 в 17:14std::exception_ptr e; try { /*try block*/ } catch (...) { e = std::current_exception(); } /*finally block*/ if (e) std::rethrow_exception(e);
– sethobrien 23 March 2015 в 17:14std::exception_ptr e; try { /*try block*/ } catch (...) { e = std::current_exception(); } /*finally block*/ if (e) std::rethrow_exception(e);
– sethobrien 23 March 2015 в 17:14std::exception_ptr e; try { /*try block*/ } catch (...) { e = std::current_exception(); } /*finally block*/ if (e) std::rethrow_exception(e);
– sethobrien 23 March 2015 в 17:14std::exception_ptr e; try { /*try block*/ } catch (...) { e = std::current_exception(); } /*finally block*/ if (e) std::rethrow_exception(e);
– sethobrien 23 March 2015 в 17:14std::exception_ptr e; try { /*try block*/ } catch (...) { e = std::current_exception(); } /*finally block*/ if (e) std::rethrow_exception(e);
– sethobrien 23 March 2015 в 17:14std::exception_ptr e; try { /*try block*/ } catch (...) { e = std::current_exception(); } /*finally block*/ if (e) std::rethrow_exception(e);
– sethobrien 23 March 2015 в 17:14std::exception_ptr e; try { /*try block*/ } catch (...) { e = std::current_exception(); } /*finally block*/ if (e) std::rethrow_exception(e);
– sethobrien 23 March 2015 в 17:14std::exception_ptr e; try { /*try block*/ } catch (...) { e = std::current_exception(); } /*finally block*/ if (e) std::rethrow_exception(e);
– sethobrien 23 March 2015 в 17:14