#mongo-db #ensure-index

mongodb-ensure-index

Mongoose-style ensure-index capabilities for the mongodb crate

2 releases

0.1.1 Jul 9, 2025
0.1.0 May 9, 2025

#2121 in Database interfaces

Download history 40/week @ 2025-06-23 64/week @ 2025-06-30 311/week @ 2025-07-07 132/week @ 2025-07-14 173/week @ 2025-07-21 112/week @ 2025-07-28 194/week @ 2025-08-04 194/week @ 2025-08-11 339/week @ 2025-08-18 223/week @ 2025-08-25 279/week @ 2025-09-01 101/week @ 2025-09-08 248/week @ 2025-09-15 242/week @ 2025-09-22 290/week @ 2025-09-29 126/week @ 2025-10-06

926 downloads per month
Used in saas-rs-sdk

MIT license

630KB

mongodb-ensure-index-rs

Mongoose-style "ensure index" capabilities for the mongodb crate.

Given a desired mongo index definition:

  • Create it if it doesn't exist
  • Update it when possible if it's changed
  • Drop & re-create it in all other cases

License Arch

Installing

$ cargo add mongodb-ensure-index

Testing

$ make check

Usage

use mongodb::IndexModel;

let index_models = vec![
    {
        IndexModel::builder()
            .keys({
                doc! {"deletedAt": 1}
            })
            .options(Some(
                IndexOptions::builder().name(Some("deletedAt_1".to_string())).build(),
            ))
            .build()
    },
    {
        IndexModel::builder()
            .keys({
                doc! {"email": 1}
            })
            .options(Some({
                // Unique non-null emails
                IndexOptions::builder()
                    .name(Some("email_1".to_string()))
                    .unique(true)
                    .partial_filter_expression({
                        doc! {"email": doc!{"$type": "string"}}
                    })
                    .build()
            }))
            .build()
    },
];
mongodb_ensure_index::ensure_indexes(coll, index_models).await.unwrap();

Dependencies

~11–23MB
~323K SLoC