{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "d432e32a-ab45-477e-ad3d-6221a2bf0266", "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "id": "4c8a42a1-ea31-4961-9502-a48af70cb05b", "metadata": {}, "outputs": [], "source": [ "from pymongo import MongoClient\n", "client = MongoClient()\n", "db = client[\"dinge\"]\n", "collection = db[\"de-collection\"]" ] }, { "cell_type": "code", "execution_count": 8, "id": "c76224fd-f579-4ba1-a072-f3ab0a75fbbc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DeleteResult({'n': 6891, 'ok': 1.0}, acknowledged=True)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.delete_many({'zhuanye': '市政'})" ] }, { "cell_type": "code", "execution_count": 9, "id": "f4a9069b-46bb-4ebc-9603-f15ac41ed812", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DingE_Processedsz.csv\n" ] } ], "source": [ "import os\n", "dirs = os.listdir(\"de\")\n", "all = []\n", "for dir in dirs:\n", " if dir != 'sz':\n", " continue\n", " files = os.listdir(\"de/\" + dir)\n", " for entry in files:\n", " if \"DingE_Processed\" in entry:\n", " print(entry)\n", " df = pd.read_csv(\"de/\" + dir + \"/\" + entry)\n", " \n", " all.append(df)" ] }, { "cell_type": "code", "execution_count": 11, "id": "06ecc93f-621d-4d3b-a07d-df359e0fe838", "metadata": {}, "outputs": [], "source": [ "c = df.fillna(0)" ] }, { "cell_type": "code", "execution_count": 12, "id": "060bd228-1f6e-47c9-b809-a99d8cca3d34", "metadata": {}, "outputs": [], "source": [ "for i in range(len(c)):\n", " item = c.iloc[i]\n", " d = (item.to_dict())\n", " d['zhuanye'] = '市政'\n", " collection.insert_one(d)" ] }, { "cell_type": "code", "execution_count": 13, "id": "d92d1370-32f1-4e2e-a04e-2675fabc70df", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0.1Unnamed: 0idDEBHGCLMCGCLGGGCLRGRGCLCLFGCLJXFGCLRGF...workzhiyinqfbzischaogaozmlxBH1BH2mcxzDeIdparent
00011-1人工挖土方一、二类土0.000.000.001151.44...挖土、抛土或装土、修整底边、边坡。0.00.000.00.00.001.0第一册 通用项目 1 土石方工程 1.1 人工挖土方
11121-2人工挖土方三类土0.000.000.001957.67...挖土、抛土或装土、修整底边、边坡。0.00.000.00.00.002.0第一册 通用项目 1 土石方工程 1.1 人工挖土方
22231-3人工挖土方四类土0.000.000.003012.61...挖土、抛土或装土、修整底边、边坡。0.00.000.00.00.003.0第一册 通用项目 1 土石方工程 1.1 人工挖土方
33341-4人工挖沟、槽土方一、二类土,深度在(m以内) 20.000.000.002157.84...挖土、装土或抛土于沟、槽边1m以外堆放,修整底边、边坡。0.00.000.00.00.004.0第一册 通用项目 1 土石方工程 1.2 人工挖沟、槽土方
44451-5人工挖沟、槽土方一、二类土,深度在(m以内) 40.000.000.002812.37...挖土、装土或抛土于沟、槽边1m以外堆放,修整底边、边坡。0.00.000.00.00.005.0第一册 通用项目 1 土石方工程 1.2 人工挖沟、槽土方
..................................................................
6903688668866889泰补6-29CIPP紫光固化法 管径(mm内)DN6000.001818.48594.4563.95...1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维...0.00.000.00.00.006889.0泰州补充定额 泰州补充定额2021 非开挖修复定额
6904688768876890泰补6-30CIPP紫光固化法 管径(mm内)DN7000.002349.78636.1765.93...1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维...0.00.000.00.00.006890.0泰州补充定额 泰州补充定额2021 非开挖修复定额
6905688868886891泰补6-31CIPP紫光固化法 管径(mm内)DN8000.002701.12677.4167.91...1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维...0.00.000.00.00.006891.0泰州补充定额 泰州补充定额2021 非开挖修复定额
6906688968896892泰补6-32CIPP紫光固化法 管径(mm内)DN9000.003682.16722.2077.81...1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维...0.00.000.00.00.006892.0泰州补充定额 泰州补充定额2021 非开挖修复定额
6907689068906893泰补6-33CIPP紫光固化法 管径(mm内)DN10000.004318.46791.6783.56...1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维...0.00.000.00.00.006893.0泰州补充定额 泰州补充定额2021 非开挖修复定额
\n", "

6908 rows × 44 columns

\n", "
" ], "text/plain": [ " Unnamed: 0.1 Unnamed: 0 id DEBH GCLMC GCLGG \\\n", "0 0 0 1 1-1 人工挖土方一、二类土 0.0 \n", "1 1 1 2 1-2 人工挖土方三类土 0.0 \n", "2 2 2 3 1-3 人工挖土方四类土 0.0 \n", "3 3 3 4 1-4 人工挖沟、槽土方一、二类土,深度在(m以内) 2 0.0 \n", "4 4 4 5 1-5 人工挖沟、槽土方一、二类土,深度在(m以内) 4 0.0 \n", "... ... ... ... ... ... ... \n", "6903 6886 6886 6889 泰补6-29 CIPP紫光固化法 管径(mm内)DN600 0.0 \n", "6904 6887 6887 6890 泰补6-30 CIPP紫光固化法 管径(mm内)DN700 0.0 \n", "6905 6888 6888 6891 泰补6-31 CIPP紫光固化法 管径(mm内)DN800 0.0 \n", "6906 6889 6889 6892 泰补6-32 CIPP紫光固化法 管径(mm内)DN900 0.0 \n", "6907 6890 6890 6893 泰补6-33 CIPP紫光固化法 管径(mm内)DN1000 0.0 \n", "\n", " GCLRGR GCLCLF GCLJXF GCLRGF ... \\\n", "0 0 0.00 0.00 1151.44 ... \n", "1 0 0.00 0.00 1957.67 ... \n", "2 0 0.00 0.00 3012.61 ... \n", "3 0 0.00 0.00 2157.84 ... \n", "4 0 0.00 0.00 2812.37 ... \n", "... ... ... ... ... ... \n", "6903 0 1818.48 594.45 63.95 ... \n", "6904 0 2349.78 636.17 65.93 ... \n", "6905 0 2701.12 677.41 67.91 ... \n", "6906 0 3682.16 722.20 77.81 ... \n", "6907 0 4318.46 791.67 83.56 ... \n", "\n", " work zhiyin qfbz \\\n", "0 挖土、抛土或装土、修整底边、边坡。 0.0 0.0 \n", "1 挖土、抛土或装土、修整底边、边坡。 0.0 0.0 \n", "2 挖土、抛土或装土、修整底边、边坡。 0.0 0.0 \n", "3 挖土、装土或抛土于沟、槽边1m以外堆放,修整底边、边坡。 0.0 0.0 \n", "4 挖土、装土或抛土于沟、槽边1m以外堆放,修整底边、边坡。 0.0 0.0 \n", "... ... ... ... \n", "6903 1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维... 0.0 0.0 \n", "6904 1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维... 0.0 0.0 \n", "6905 1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维... 0.0 0.0 \n", "6906 1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维... 0.0 0.0 \n", "6907 1.启闭井盖、强制通风、有毒气体检测、管壁清洗。\\r\\n2.设备就位、拉入底膜,拉入玻璃纤维... 0.0 0.0 \n", "\n", " ischaogao zmlx BH1 BH2 mcxz DeId parent \n", "0 0 0.0 0.0 0.0 0 1.0 第一册 通用项目 1 土石方工程 1.1 人工挖土方 \n", "1 0 0.0 0.0 0.0 0 2.0 第一册 通用项目 1 土石方工程 1.1 人工挖土方 \n", "2 0 0.0 0.0 0.0 0 3.0 第一册 通用项目 1 土石方工程 1.1 人工挖土方 \n", "3 0 0.0 0.0 0.0 0 4.0 第一册 通用项目 1 土石方工程 1.2 人工挖沟、槽土方 \n", "4 0 0.0 0.0 0.0 0 5.0 第一册 通用项目 1 土石方工程 1.2 人工挖沟、槽土方 \n", "... ... ... ... ... ... ... ... \n", "6903 0 0.0 0.0 0.0 0 6889.0 泰州补充定额 泰州补充定额2021 非开挖修复定额 \n", "6904 0 0.0 0.0 0.0 0 6890.0 泰州补充定额 泰州补充定额2021 非开挖修复定额 \n", "6905 0 0.0 0.0 0.0 0 6891.0 泰州补充定额 泰州补充定额2021 非开挖修复定额 \n", "6906 0 0.0 0.0 0.0 0 6892.0 泰州补充定额 泰州补充定额2021 非开挖修复定额 \n", "6907 0 0.0 0.0 0.0 0 6893.0 泰州补充定额 泰州补充定额2021 非开挖修复定额 \n", "\n", "[6908 rows x 44 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c" ] }, { "cell_type": "code", "execution_count": 17, "id": "7ffb8687-7ffc-42dc-b8a1-1937ed7129a0", "metadata": {}, "outputs": [ { "ename": "OperationFailure", "evalue": "a group specification must include an _id, full error: {'ok': 0.0, 'errmsg': 'a group specification must include an _id', 'code': 15955, 'codeName': 'Location15955'}", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mOperationFailure\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[17]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mcollection\u001b[49m\u001b[43m.\u001b[49m\u001b[43maggregate\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\n\u001b[32m 2\u001b[39m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[32m 3\u001b[39m \u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43m$group\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[32m 4\u001b[39m \n\u001b[32m 5\u001b[39m \u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mcount\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43m$sum\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43m1\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m}\u001b[49m\n\u001b[32m 6\u001b[39m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\n\u001b[32m 7\u001b[39m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\n\u001b[32m 8\u001b[39m \u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/collection.py:2979\u001b[39m, in \u001b[36mCollection.aggregate\u001b[39m\u001b[34m(self, pipeline, session, let, comment, **kwargs)\u001b[39m\n\u001b[32m 2902\u001b[39m \u001b[38;5;250m\u001b[39m\u001b[33;03m\"\"\"Perform an aggregation using the aggregation framework on this\u001b[39;00m\n\u001b[32m 2903\u001b[39m \u001b[33;03mcollection.\u001b[39;00m\n\u001b[32m 2904\u001b[39m \n\u001b[32m (...)\u001b[39m\u001b[32m 2976\u001b[39m \u001b[33;03m https://mongodb.com/docs/manual/reference/command/aggregate\u001b[39;00m\n\u001b[32m 2977\u001b[39m \u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 2978\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m._database.client._tmp_session(session, close=\u001b[38;5;28;01mFalse\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m s:\n\u001b[32m-> \u001b[39m\u001b[32m2979\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_aggregate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 2980\u001b[39m \u001b[43m \u001b[49m\u001b[43m_CollectionAggregationCommand\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2981\u001b[39m \u001b[43m \u001b[49m\u001b[43mpipeline\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2982\u001b[39m \u001b[43m \u001b[49m\u001b[43mCommandCursor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2983\u001b[39m \u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[43m=\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2984\u001b[39m \u001b[43m \u001b[49m\u001b[43mexplicit_session\u001b[49m\u001b[43m=\u001b[49m\u001b[43msession\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 2985\u001b[39m \u001b[43m \u001b[49m\u001b[43mlet\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlet\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2986\u001b[39m \u001b[43m \u001b[49m\u001b[43mcomment\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcomment\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2987\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2988\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/_csot.py:125\u001b[39m, in \u001b[36mapply..csot_wrapper\u001b[39m\u001b[34m(self, *args, **kwargs)\u001b[39m\n\u001b[32m 123\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m _TimeoutContext(timeout):\n\u001b[32m 124\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;28mself\u001b[39m, *args, **kwargs)\n\u001b[32m--> \u001b[39m\u001b[32m125\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/collection.py:2886\u001b[39m, in \u001b[36mCollection._aggregate\u001b[39m\u001b[34m(self, aggregation_command, pipeline, cursor_class, session, explicit_session, let, comment, **kwargs)\u001b[39m\n\u001b[32m 2875\u001b[39m kwargs[\u001b[33m\"\u001b[39m\u001b[33mcomment\u001b[39m\u001b[33m\"\u001b[39m] = comment\n\u001b[32m 2876\u001b[39m cmd = aggregation_command(\n\u001b[32m 2877\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m 2878\u001b[39m cursor_class,\n\u001b[32m (...)\u001b[39m\u001b[32m 2883\u001b[39m user_fields={\u001b[33m\"\u001b[39m\u001b[33mcursor\u001b[39m\u001b[33m\"\u001b[39m: {\u001b[33m\"\u001b[39m\u001b[33mfirstBatch\u001b[39m\u001b[33m\"\u001b[39m: \u001b[32m1\u001b[39m}},\n\u001b[32m 2884\u001b[39m )\n\u001b[32m-> \u001b[39m\u001b[32m2886\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_database\u001b[49m\u001b[43m.\u001b[49m\u001b[43mclient\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_retryable_read\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 2887\u001b[39m \u001b[43m \u001b[49m\u001b[43mcmd\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_cursor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2888\u001b[39m \u001b[43m \u001b[49m\u001b[43mcmd\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_read_preference\u001b[49m\u001b[43m(\u001b[49m\u001b[43msession\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[32m 2889\u001b[39m \u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2890\u001b[39m \u001b[43m \u001b[49m\u001b[43mretryable\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mcmd\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_performs_write\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2891\u001b[39m \u001b[43m \u001b[49m\u001b[43moperation\u001b[49m\u001b[43m=\u001b[49m\u001b[43m_Op\u001b[49m\u001b[43m.\u001b[49m\u001b[43mAGGREGATE\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2892\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py:2026\u001b[39m, in \u001b[36mMongoClient._retryable_read\u001b[39m\u001b[34m(self, func, read_pref, session, operation, address, retryable, operation_id)\u001b[39m\n\u001b[32m 2021\u001b[39m \u001b[38;5;66;03m# Ensure that the client supports retrying on reads and there is no session in\u001b[39;00m\n\u001b[32m 2022\u001b[39m \u001b[38;5;66;03m# transaction, otherwise, we will not support retry behavior for this call.\u001b[39;00m\n\u001b[32m 2023\u001b[39m retryable = \u001b[38;5;28mbool\u001b[39m(\n\u001b[32m 2024\u001b[39m retryable \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m.options.retry_reads \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (session \u001b[38;5;129;01mand\u001b[39;00m session.in_transaction)\n\u001b[32m 2025\u001b[39m )\n\u001b[32m-> \u001b[39m\u001b[32m2026\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_retry_internal\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 2027\u001b[39m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2028\u001b[39m \u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2029\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 2030\u001b[39m \u001b[43m \u001b[49m\u001b[43moperation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2031\u001b[39m \u001b[43m \u001b[49m\u001b[43mis_read\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 2032\u001b[39m \u001b[43m \u001b[49m\u001b[43maddress\u001b[49m\u001b[43m=\u001b[49m\u001b[43maddress\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2033\u001b[39m \u001b[43m \u001b[49m\u001b[43mread_pref\u001b[49m\u001b[43m=\u001b[49m\u001b[43mread_pref\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2034\u001b[39m \u001b[43m \u001b[49m\u001b[43mretryable\u001b[49m\u001b[43m=\u001b[49m\u001b[43mretryable\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2035\u001b[39m \u001b[43m \u001b[49m\u001b[43moperation_id\u001b[49m\u001b[43m=\u001b[49m\u001b[43moperation_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2036\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/_csot.py:125\u001b[39m, in \u001b[36mapply..csot_wrapper\u001b[39m\u001b[34m(self, *args, **kwargs)\u001b[39m\n\u001b[32m 123\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m _TimeoutContext(timeout):\n\u001b[32m 124\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;28mself\u001b[39m, *args, **kwargs)\n\u001b[32m--> \u001b[39m\u001b[32m125\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py:1993\u001b[39m, in \u001b[36mMongoClient._retry_internal\u001b[39m\u001b[34m(self, func, session, bulk, operation, is_read, address, read_pref, retryable, operation_id)\u001b[39m\n\u001b[32m 1956\u001b[39m \u001b[38;5;129m@_csot\u001b[39m.apply\n\u001b[32m 1957\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_retry_internal\u001b[39m(\n\u001b[32m 1958\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m (...)\u001b[39m\u001b[32m 1967\u001b[39m operation_id: Optional[\u001b[38;5;28mint\u001b[39m] = \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[32m 1968\u001b[39m ) -> T:\n\u001b[32m 1969\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"Internal retryable helper for all client transactions.\u001b[39;00m\n\u001b[32m 1970\u001b[39m \n\u001b[32m 1971\u001b[39m \u001b[33;03m :param func: Callback function we want to retry\u001b[39;00m\n\u001b[32m (...)\u001b[39m\u001b[32m 1980\u001b[39m \u001b[33;03m :return: Output of the calling func()\u001b[39;00m\n\u001b[32m 1981\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m 1982\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_ClientConnectionRetryable\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 1983\u001b[39m \u001b[43m \u001b[49m\u001b[43mmongo_client\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 1984\u001b[39m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m=\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1985\u001b[39m \u001b[43m \u001b[49m\u001b[43mbulk\u001b[49m\u001b[43m=\u001b[49m\u001b[43mbulk\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1986\u001b[39m \u001b[43m \u001b[49m\u001b[43moperation\u001b[49m\u001b[43m=\u001b[49m\u001b[43moperation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1987\u001b[39m \u001b[43m \u001b[49m\u001b[43mis_read\u001b[49m\u001b[43m=\u001b[49m\u001b[43mis_read\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1988\u001b[39m \u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[43m=\u001b[49m\u001b[43msession\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1989\u001b[39m \u001b[43m \u001b[49m\u001b[43mread_pref\u001b[49m\u001b[43m=\u001b[49m\u001b[43mread_pref\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1990\u001b[39m \u001b[43m \u001b[49m\u001b[43maddress\u001b[49m\u001b[43m=\u001b[49m\u001b[43maddress\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1991\u001b[39m \u001b[43m \u001b[49m\u001b[43mretryable\u001b[49m\u001b[43m=\u001b[49m\u001b[43mretryable\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1992\u001b[39m \u001b[43m \u001b[49m\u001b[43moperation_id\u001b[49m\u001b[43m=\u001b[49m\u001b[43moperation_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m-> \u001b[39m\u001b[32m1993\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py:2730\u001b[39m, in \u001b[36m_ClientConnectionRetryable.run\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 2728\u001b[39m \u001b[38;5;28mself\u001b[39m._check_last_error(check_csot=\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[32m 2729\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m2730\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._is_read \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m._write()\n\u001b[32m 2731\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m ServerSelectionTimeoutError:\n\u001b[32m 2732\u001b[39m \u001b[38;5;66;03m# The application may think the write was never attempted\u001b[39;00m\n\u001b[32m 2733\u001b[39m \u001b[38;5;66;03m# if we raise ServerSelectionTimeoutError on the retry\u001b[39;00m\n\u001b[32m 2734\u001b[39m \u001b[38;5;66;03m# attempt. Raise the original exception instead.\u001b[39;00m\n\u001b[32m 2735\u001b[39m \u001b[38;5;28mself\u001b[39m._check_last_error()\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py:2891\u001b[39m, in \u001b[36m_ClientConnectionRetryable._read\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 2883\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._retrying:\n\u001b[32m 2884\u001b[39m _debug_log(\n\u001b[32m 2885\u001b[39m _COMMAND_LOGGER,\n\u001b[32m 2886\u001b[39m message=\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mRetrying read attempt number \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m._attempt_number\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m,\n\u001b[32m (...)\u001b[39m\u001b[32m 2889\u001b[39m operationId=\u001b[38;5;28mself\u001b[39m._operation_id,\n\u001b[32m 2890\u001b[39m )\n\u001b[32m-> \u001b[39m\u001b[32m2891\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_func\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_session\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_server\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mread_pref\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/aggregation.py:164\u001b[39m, in \u001b[36m_AggregationCommand.get_cursor\u001b[39m\u001b[34m(self, session, server, conn, read_preference)\u001b[39m\n\u001b[32m 161\u001b[39m write_concern = \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m 163\u001b[39m \u001b[38;5;66;03m# Run command.\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m164\u001b[39m result = \u001b[43mconn\u001b[49m\u001b[43m.\u001b[49m\u001b[43mcommand\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 165\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_database\u001b[49m\u001b[43m.\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 166\u001b[39m \u001b[43m \u001b[49m\u001b[43mcmd\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 167\u001b[39m \u001b[43m \u001b[49m\u001b[43mread_preference\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 168\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_target\u001b[49m\u001b[43m.\u001b[49m\u001b[43mcodec_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 169\u001b[39m \u001b[43m \u001b[49m\u001b[43mparse_write_concern_error\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 170\u001b[39m \u001b[43m \u001b[49m\u001b[43mread_concern\u001b[49m\u001b[43m=\u001b[49m\u001b[43mread_concern\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 171\u001b[39m \u001b[43m \u001b[49m\u001b[43mwrite_concern\u001b[49m\u001b[43m=\u001b[49m\u001b[43mwrite_concern\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 172\u001b[39m \u001b[43m \u001b[49m\u001b[43mcollation\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_collation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 173\u001b[39m \u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[43m=\u001b[49m\u001b[43msession\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 174\u001b[39m \u001b[43m \u001b[49m\u001b[43mclient\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_database\u001b[49m\u001b[43m.\u001b[49m\u001b[43mclient\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 175\u001b[39m \u001b[43m \u001b[49m\u001b[43muser_fields\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_user_fields\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 176\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 178\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._result_processor:\n\u001b[32m 179\u001b[39m \u001b[38;5;28mself\u001b[39m._result_processor(result, conn)\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/helpers.py:47\u001b[39m, in \u001b[36m_handle_reauth..inner\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 44\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpymongo\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01msynchronous\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpool\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Connection\n\u001b[32m 46\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m---> \u001b[39m\u001b[32m47\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 48\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m OperationFailure \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[32m 49\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m no_reauth:\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/pool.py:414\u001b[39m, in \u001b[36mConnection.command\u001b[39m\u001b[34m(self, dbname, spec, read_preference, codec_options, check, allowable_errors, read_concern, write_concern, parse_write_concern_error, collation, session, client, retryable_write, publish_events, user_fields, exhaust_allowed)\u001b[39m\n\u001b[32m 412\u001b[39m \u001b[38;5;28mself\u001b[39m._raise_if_not_writable(unacknowledged)\n\u001b[32m 413\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m414\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mcommand\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 415\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 416\u001b[39m \u001b[43m \u001b[49m\u001b[43mdbname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 417\u001b[39m \u001b[43m \u001b[49m\u001b[43mspec\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 418\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mis_mongos\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 419\u001b[39m \u001b[43m \u001b[49m\u001b[43mread_preference\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 420\u001b[39m \u001b[43m \u001b[49m\u001b[43mcodec_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 421\u001b[39m \u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 422\u001b[39m \u001b[43m \u001b[49m\u001b[43mclient\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 423\u001b[39m \u001b[43m \u001b[49m\u001b[43mcheck\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 424\u001b[39m \u001b[43m \u001b[49m\u001b[43mallowable_errors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 425\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43maddress\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 426\u001b[39m \u001b[43m \u001b[49m\u001b[43mlisteners\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 427\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mmax_bson_size\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 428\u001b[39m \u001b[43m \u001b[49m\u001b[43mread_concern\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 429\u001b[39m \u001b[43m \u001b[49m\u001b[43mparse_write_concern_error\u001b[49m\u001b[43m=\u001b[49m\u001b[43mparse_write_concern_error\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 430\u001b[39m \u001b[43m \u001b[49m\u001b[43mcollation\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcollation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 431\u001b[39m \u001b[43m \u001b[49m\u001b[43mcompression_ctx\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mcompression_context\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 432\u001b[39m \u001b[43m \u001b[49m\u001b[43muse_op_msg\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mop_msg_enabled\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 433\u001b[39m \u001b[43m \u001b[49m\u001b[43munacknowledged\u001b[49m\u001b[43m=\u001b[49m\u001b[43munacknowledged\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 434\u001b[39m \u001b[43m \u001b[49m\u001b[43muser_fields\u001b[49m\u001b[43m=\u001b[49m\u001b[43muser_fields\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 435\u001b[39m \u001b[43m \u001b[49m\u001b[43mexhaust_allowed\u001b[49m\u001b[43m=\u001b[49m\u001b[43mexhaust_allowed\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 436\u001b[39m \u001b[43m \u001b[49m\u001b[43mwrite_concern\u001b[49m\u001b[43m=\u001b[49m\u001b[43mwrite_concern\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 437\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 438\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m (OperationFailure, NotPrimaryError):\n\u001b[32m 439\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/synchronous/network.py:212\u001b[39m, in \u001b[36mcommand\u001b[39m\u001b[34m(conn, dbname, spec, is_mongos, read_preference, codec_options, session, client, check, allowable_errors, address, listeners, max_bson_size, read_concern, parse_write_concern_error, collation, compression_ctx, use_op_msg, unacknowledged, user_fields, exhaust_allowed, write_concern)\u001b[39m\n\u001b[32m 210\u001b[39m client._process_response(response_doc, session)\n\u001b[32m 211\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m check:\n\u001b[32m--> \u001b[39m\u001b[32m212\u001b[39m \u001b[43mhelpers_shared\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_check_command_response\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 213\u001b[39m \u001b[43m \u001b[49m\u001b[43mresponse_doc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 214\u001b[39m \u001b[43m \u001b[49m\u001b[43mconn\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmax_wire_version\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 215\u001b[39m \u001b[43m \u001b[49m\u001b[43mallowable_errors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 216\u001b[39m \u001b[43m \u001b[49m\u001b[43mparse_write_concern_error\u001b[49m\u001b[43m=\u001b[49m\u001b[43mparse_write_concern_error\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 217\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 218\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[32m 219\u001b[39m duration = datetime.datetime.now() - start\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Downloads/qingdan/lib/python3.13/site-packages/pymongo/helpers_shared.py:250\u001b[39m, in \u001b[36m_check_command_response\u001b[39m\u001b[34m(response, max_wire_version, allowable_errors, parse_write_concern_error)\u001b[39m\n\u001b[32m 247\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m code == \u001b[32m43\u001b[39m:\n\u001b[32m 248\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m CursorNotFound(errmsg, code, response, max_wire_version)\n\u001b[32m--> \u001b[39m\u001b[32m250\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m OperationFailure(errmsg, code, response, max_wire_version)\n", "\u001b[31mOperationFailure\u001b[39m: a group specification must include an _id, full error: {'ok': 0.0, 'errmsg': 'a group specification must include an _id', 'code': 15955, 'codeName': 'Location15955'}" ] } ], "source": [ "pipeline = [{'$match': {}}, {'$count': 'total_documents'}]\n", "results = collection.aggregate(pipeline)\n", "print(list(results))" ] }, { "cell_type": "code", "execution_count": null, "id": "b436a296-ee59-470d-8ce3-4a049dcf9401", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "f0d90a94-a35a-4119-89d1-ec39a61f6d72", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.4" } }, "nbformat": 4, "nbformat_minor": 5 }