{"id":21770,"library":"pymongoarrow","title":"PyMongoArrow","description":"PyMongoArrow bridges MongoDB with NumPy, Pandas, Polars, and PyArrow. Version 1.13.0 adds parallel batch processing and Polars ExtensionTypes support. Released ~monthly.","status":"active","version":"1.13.0","language":"python","source_language":"en","source_url":"https://github.com/mongodb-labs/mongo-arrow/tree/main/bindings/python","tags":["mongodb","arrow","pandas","polars","numpy","pyarrow"],"install":[{"cmd":"pip install pymongoarrow","lang":"bash","label":"Core install"},{"cmd":"pip install pymongoarrow[polars]","lang":"bash","label":"With Polars support"},{"cmd":"pip install pymongoarrow[pandas]","lang":"bash","label":"With Pandas support"},{"cmd":"pip install pymongoarrow[all]","lang":"bash","label":"All extras"}],"dependencies":[{"reason":"MongoDB driver","package":"pymongo","optional":false},{"reason":"Arrow data format","package":"pyarrow","optional":false},{"reason":"DataFrame conversion","package":"pandas","optional":true},{"reason":"DataFrame conversion","package":"polars","optional":true}],"imports":[{"note":"","wrong":"","symbol":"pymongoarrow","correct":"import pymongoarrow"},{"note":"","wrong":"","symbol":"pymongoarrow.api","correct":"from pymongoarrow.api import Schema"}],"quickstart":{"code":"import os\nimport pymongo\nfrom pymongoarrow.api import Schema\nfrom pymongoarrow.monkey import patch_all\n\n# Patch pymongo to enable arrow operations\npatch_all()\n\nclient = pymongo.MongoClient(os.environ.get('MONGODB_URI', 'mongodb://localhost:27017'))\ndb = client.test\ncoll = db.mydata\n\n# Define schema (field name: type)\nschema = Schema({'name': str, 'age': int, 'city': str})\n\n# Insert sample data\ncoll.insert_many([\n    {'name': 'Alice', 'age': 30, 'city': 'NYC'},\n    {'name': 'Bob', 'age': 25, 'city': 'SF'},\n])\n\n# Fetch as Arrow table\nimport pyarrow as pa\ntable = coll.find_arrow_all({}, schema=schema)\nprint(table)\n\n# Convert to pandas\ndf = coll.find_pandas_all({}, schema=schema)\nprint(df)\n\n# Convert to polars\nimport polars as pl\npl_df = coll.find_polars_all({}, schema=schema)\nprint(pl_df)","lang":"python","description":"Basic usage: patch pymongo, define schema, query collections to get Arrow/Pandas/Polars outputs."},"warnings":[{"fix":"Upgrade to Python >=3.10. If writing Arrow data, do not expect old TypeRegistry replacement behavior.","message":"In v1.11.0, Python 3.9 support was dropped and Python 3.13 free-threaded was dropped on some platforms. The TypeRegistry in write() now extends rather than replaces.","severity":"breaking","affected_versions":">=1.11.0"},{"fix":"Monitor release notes for deprecation; consider using API directly with Schema and find_arrow_all.","message":"PyMongoArrow 1.13.0 is still using pymongo.monkey.patch_all() which may change in future versions.","severity":"deprecated","affected_versions":">=1.13.0"},{"fix":"Always define Schema explicitly for fields that may exceed inferred type range.","message":"Schema inference may overflow for large integers (e.g., int64) if not explicitly defined. In v1.13.0, schema inference raises OverflowError for out-of-range values.","severity":"gotcha","affected_versions":">=1.13.0"},{"fix":"Install pymongoarrow[pandas] or pandas separately.","message":"pandas is an optional dependency; if not installed, find_pandas_all() will raise ImportError.","severity":"gotcha","affected_versions":">=1.10.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use: from pymongoarrow.monkey import patch_all","cause":"Import path changed in older versions; patch_all is in pymongoarrow.monkey.","error":"ImportError: cannot import name 'patch_all' from 'pymongoarrow'"},{"fix":"Use: Schema({'field': type}) instead of Schema('field', type)","cause":"Schema is not a function; it's a class that takes keyword arguments.","error":"TypeError: 'Schema' object is not callable"},{"fix":"Upgrade MongoDB to >=3.6 or use a different query method.","cause":"MongoDB server version too old (<3.6) or missing aggregation support.","error":"pymongo.errors.OperationFailure: unknown command: aggregation"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}