-
Notifications
You must be signed in to change notification settings - Fork 190
Open
Assignees
@biro456
where the
Since this logic is not public I had to reproduce it in my code and that's how I found the bug.
Description
Versions/Environment
- What version of Rust are you using?
rustc 1.81.0 (eeb90cda1 2024年09月04日) - What operating system are you using?
Ubuntu 22.04.4 LTS on WSL/Windows 10 Pro 22H2 - What versions of the driver and its dependencies are you using?
mongodb@3.1.0andbson@2.13.0 - What version of MongoDB are you using?
MongoDB 8.0.1 Community - What is your MongoDB topology (standalone, replica set, sharded cluster, serverless)?
standalone
Describe the bug
When creating indexes with the text, 2d, 2dsphere or hashed types the default index name generated by the driver does not follow the documentation.
Steps to reproduce
- Start a local MongoDB server
- Run this snippet
use mongodb::bson::{doc, Document}; use mongodb::error::Result; use mongodb::{Client, IndexModel}; #[tokio::main] async fn main() -> Result<()> { let client = Client::with_uri_str("mongodb://localhost:27017").await?; let db = client.database("test"); db.create_collection("test").await?; let col = db.collection::<Document>("test"); col.create_index(IndexModel::builder().keys(doc! { "field": "2d" }).build()).await?; Ok(()) }
- Verify the index name with the shell or Compass
Expected result
The index is named field_2d.
Actual result
The index is named field_"2d".
The problem boils down to
mongo-rust-driver/src/index.rs
Line 38 in ef0893f
.map(|(k, v)| format!("{}_{}", k, v))
where the
Bson conversion of v to a string is always wrapped by ".Since this logic is not public I had to reproduce it in my code and that's how I found the bug.
Metadata
Metadata
Assignees
Labels
No labels