{"record":{"id":"7bc7355fba09506e","repo":"risingwavelabs/risingwave","slug":"collection-name-field-must-be-specified-when-colle","errorCode":null,"errorMessage":"collection.name.field must be specified when collection.name.field.drop is enabled","messagePattern":"collection\\.name\\.field must be specified when collection\\.name\\.field\\.drop is enabled","errorType":"validation","errorClass":"SinkError::Config","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/mongodb.rs","lineNumber":332,"sourceCode":"            return Err(SinkError::Config(anyhow!(err).context(format!(\n                \"invalid collection.name {}\",\n                self.config.common.collection_name\n            ))));\n        }\n\n        // checking reachability\n        let client = self.config.common.build_client().await?;\n        let client = ClientGuard::new(self.param.sink_name.clone(), client);\n        client\n            .database(\"admin\")\n            .run_command(doc! {\"hello\":1})\n            .await\n            .map_err(|err| {\n                SinkError::Mongodb(anyhow!(err).context(\"failed to send hello command to mongodb\"))\n            })?;\n\n        if self.config.drop_collection_name_field && self.config.collection_name_field.is_none() {\n            return Err(SinkError::Config(anyhow!(\n                \"collection.name.field must be specified when collection.name.field.drop is enabled\"\n            )));\n        }\n\n        // checking dynamic collection name settings\n        if let Some(coll_field) = &self.config.collection_name_field {\n            let fields = self.schema.fields();\n\n            let coll_field_index = fields\n                .iter()\n                .enumerate()\n                .find_map(|(index, field)| {\n                    if &field.name == coll_field {\n                        Some(index)\n                    } else {\n                        None\n                    }\n                })","sourceCodeStart":314,"sourceCodeEnd":350,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/mongodb.rs#L314-L350","documentation":"The option `collection.name.field.drop` (drop the dynamic collection-name column from outgoing documents) only makes sense together with `collection.name.field`, which names that column. `validate` rejects enabling the drop flag without specifying the field. This is a fail-fast config consistency check.","triggerScenarios":"CREATE SINK into mongodb with `collection.name.field.drop='true'` (or similar) in WITH options but no `collection.name.field` option.","commonSituations":"Users enabling drop-after-write thinking it implies dynamic collection routing; copying config snippets and omitting the field name; renaming options across versions.","solutions":["Add `collection.name.field='<column>'` to the WITH options.","If dynamic collections are not needed, remove the `collection.name.field.drop` option.","Verify exact option names against the current RisingWave connector docs."],"exampleFix":"-- before\nCREATE SINK s FROM mv INTO mongodb WITH (\n  connector='mongodb', collection='db.c', collection.name.field.drop='true'\n);\n-- after\nCREATE SINK s FROM mv INTO mongodb WITH (\n  connector='mongodb', collection='db.c',\n  collection.name.field='target_collection', collection.name.field.drop='true'\n);","handlingStrategy":"validation","validationCode":"if (options['collection.name.field.drop'] != null && options['collection.name.field'] == null) {\n  throw new Error(\"collection.name.field is required when collection.name.field.drop is set\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat drop flag and field name as an inseparable pair","Generate sink options from a shared config object to avoid omissions"],"tags":["mongodb","sink","config","dynamic-collection"],"backgroundTag":"conflicting-config-options","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}