Astlvk
December 16, 2025, 8:17am
1
Description
Hi everyone,
I currently have a collection with a nested object property (object or object[]) that already contains data.
For example:
Property(
name="merged_summary",
data_type=DataType.OBJECT_ARRAY,
nested_properties=[
Property(
name="summary",
data_type=DataType.TEXT,
),
Property(
name="turn",
data_type=DataType.INT,
),
],
)
If I want to add new fields to this existing nested object , for example:
Property(
name="type",
data_type=DataType.TEXT,
)
is it possible to do this without recreating the collection or migrating existing data ?
In other words:
Does Weaviate support extending an existing object / object[] schema by adding new nested properties when data already exists?
Server Setup Information
Weaviate Server Version: 1.33.10
Deployment Method: docker
Client Language and Version: python & 4.18.3
Multitenancy: Yes
hi @Astlvk !!
Welcome to our community
If you have AUTOSCHEMA_ENABLED set to true (that’s the default), you can just push data in. For example:
client.collections.delete("MyObjectCollection")
collection = client.collections.create(
"MyObjectCollection"
)
# push data:
collection.data.insert({"object1": {"this": "is a test object"}})
# get the property schema
collection.config.get().properties[0].to_dict()
# prints:
{'name': 'object1',
'description': "This property was generated by Weaviate's auto-schema feature on Wed Dec 17 14:26:49 2025",
'dataType': ['object'],
'indexFilterable': True,
'indexSearchable': False,
'indexRangeFilters': False,
'tokenization': None,
'nestedProperties': [{'dataType': ['text'],
'description': "This nested property was generated by Weaviate's auto-schema feature on Wed Dec 17 14:26:49 2025",
'indexFilterable': True,
'indexSearchable': True,
'name': 'this',
'tokenization': 'word'}]}
# now you push a different object:
collection.data.insert({"object1": {"this": "is a second test object", "that": ["hi", "there!"]}})
# get the property schema
collection.config.get().properties[0].to_dict()
# prints:
{'name': 'object1',
'description': "This property was generated by Weaviate's auto-schema feature on Wed Dec 17 14:26:49 2025",
'dataType': ['object'],
'indexFilterable': True,
'indexSearchable': False,
'indexRangeFilters': False,
'tokenization': None,
'nestedProperties': [{'dataType': ['text'],
'description': "This nested property was generated by Weaviate's auto-schema feature on Wed Dec 17 14:26:49 2025",
'indexFilterable': True,
'indexSearchable': True,
'name': 'this',
'tokenization': 'word'},
{'dataType': ['text[]'],
'description': "This nested property was generated by Weaviate's auto-schema feature on Wed Dec 17 14:27:42 2025",
'indexFilterable': True,
'indexSearchable': True,
'name': 'that',
'tokenization': 'word'}]}
However, if you have auto schema turned off, there doesn’t seems to have a away to achieve the same change
I will investigate it more and get back here.
Thanks and happy coding!
Astlvk
December 19, 2025, 6:35am
3
Thank you for the reply!
It’s a bit unfortunate in my situation — I have AUTOSCHEMA_ENABLED set to false (as recommended in the Weaviate documentation for production environments), so automatic nested property expansion isn’t available.
As the product evolves, schema changes — especially adding new fields — are often unavoidable. It would be great to see stronger support or recommended best practices for handling nested schema evolution when autoschema is disabled.
Thanks again for the help — much appreciated!