Python MongoDB Create Collection
In MongoDB, collections are automatically created when you insert the first document into them. You don’t need to explicitly create a collection beforehand. However, you can create a collection explicitly using the create_collection() method if you want more control, like setting specific options for the collection (e.g., validation rules, size limits, etc.).
Steps to Create a Collection in MongoDB Using Python
- Install PyMongo (if not already installed):
pip install pymongo - Connect to MongoDB, create a database, and then create a collection.
Example: Automatically Creating a Collection
import pymongo
# Step 1: Connect to MongoDB (adjust the URL as needed)
client = pymongo.MongoClient("mongodb://localhost:27017/")
# Step 2: Access or create a database
mydb = client["mydatabase"]
# Step 3: Insert a document to create a collection automatically
mycol = mydb["customers"]
# Step 4: Insert a document to trigger the collection creation
mydict = { "name": "John", "address": "123 Elm Street" }
mycol.insert_one(mydict)
# Step 5: Verify the collection has been created
print(mydb.list_collection_names()) # Should show 'customers'
Example: Explicitly Creating a Collection
If you want to explicitly create a collection (before inserting any documents), you can use the create_collection() method.
import pymongo
# Step 1: Connect to MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# Step 2: Access the database (creates it if it doesn't exist)
mydb = client["mydatabase"]
# Step 3: Create a collection explicitly
mycol = mydb.create_collection("orders")
# Step 4: Verify the collection has been created
print(mydb.list_collection_names()) # Should show 'orders'
Example with Collection Options
You can also provide options when creating a collection, such as setting a maximum size, or enabling document validation rules.
# Step 3: Create a capped collection (fixed size) with a limit of 1000 bytes
mycol = mydb.create_collection(
"capped_orders",
capped=True, # Enable a capped collection
size=1000 # Size limit in bytes
)
# Step 4: Verify the collection
print(mydb.list_collection_names()) # Should show 'capped_orders'
Important Points:
- Automatic Collection Creation: MongoDB automatically creates collections when you insert data. You don’t need to explicitly create collections unless you have specific requirements.
- Explicit Collection Creation: You can use
create_collection()to explicitly create a collection, particularly useful when you want to configure options like capped collections, size limits, or validation rules. - Collection Options: The
create_collection()method allows you to set options such as capped collections, size limits, and document validation rules.
Full Example: Automatically Creating Collections and Inserting Data
import pymongo
# Connect to MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# Access or create a database
mydb = client["mydatabase"]
# Insert a document to automatically create the collection 'customers'
customers_col = mydb["customers"]
customers_col.insert_one({ "name": "Alice", "address": "123 Maple St" })
# Insert a document to automatically create the collection 'orders'
orders_col = mydb["orders"]
orders_col.insert_one({ "product": "Laptop", "quantity": 1 })
# List the collections in the database
print(mydb.list_collection_names())
In this example, two collections (customers and orders) are automatically created when documents are inserted into them. The collections will appear in the database after the first document is inserted.
Summary:
- MongoDB automatically creates collections when data is inserted into them.
- Use
create_collection()if you need more control over the collection’s properties. - You can use
list_collection_names()to verify the collections within a database.