mongodb / mongo-rust-driver

The official MongoDB Rust Driver
https://www.mongodb.com/docs/drivers/rust/current/
Apache License 2.0
1.44k stars 163 forks source link

RUST-2054 Incorrect default index name when creating an index #1225

Open biro456 opened 3 days ago

biro456 commented 3 days ago

Versions/Environment

  1. What version of Rust are you using? rustc 1.81.0 (eeb90cda1 2024-09-04)
  2. What operating system are you using? Ubuntu 22.04.4 LTS on WSL/Windows 10 Pro 22H2
  3. What versions of the driver and its dependencies are you using? mongodb@3.1.0 and bson@2.13.0
  4. What version of MongoDB are you using? MongoDB 8.0.1 Community
  5. 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

  1. Start a local MongoDB server
  2. 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::("test");

col.create_index(IndexModel::builder().keys(doc! { "field": "2d" }).build()).await?;

Ok(()) }


3. 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"`.

![image](https://github.com/user-attachments/assets/f658eb09-26fd-42c2-aea9-ed9b1fdc8422)

The problem boils down to https://github.com/mongodb/mongo-rust-driver/blob/ef0893f77627a87b9eff7fbf4fd2059ea6b19211/src/index.rs#L38
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.
abr-egn commented 2 days ago

Thanks for the detailed report! I'm looking into this now.

abr-egn commented 1 hour ago

I just merged https://github.com/mongodb/mongo-rust-driver/pull/1226 which fixes this, and will go out in our next release. Thanks again for the report!