#[derive(Mongo)]
{
    // Attributes available to this derive:
    #[mongo]
}
Expand description

Derives mongo traits on the decorated type.

Container Attributes

  • #[mongo(collection = "...")]: derives the Collection trait
  • #[mongo(field)]: derives the AsField & Field traits
  • #[mongo(filter)]: derives the AsFilter & Filter traits
  • #[mongo(update)]: derives the AsUpdate & Update traits

#[mongo(collection = "...")]

Tells the derive to implement the Collection trait where the "..." is the name of the collection.

#[derive(Mongo)]
#[mongo(collection = "users")]
pub struct User {
    name: String,
    age: u32,
}

#[mongo(field)]

Tells the derive to implement the AsField & Field traits.

#[derive(Mongo)]
#[mongo(field)]
pub struct User {
    name: String,
    age: u32,
}

// The derived field enum can be exposed from the derived module which uses the type's name in
// snake_case
use self::user::Field;

#[mongo(filter)]

Tells the derive to implement the AsFilter & Filter traits.

#[derive(Mongo)]
#[mongo(filter)]
pub struct User {
    name: String,
    age: u32,
}

// The derived filter struct can be exposed from the derived module which uses the type's name in
// snake_case
use self::user::Filter;

#[mongo(update)]

Tells the derive to implement the AsUpdate & Update traits.

#[derive(Mongo)]
#[mongo(update)]
pub struct User {
    name: String,
    age: u32,
}

// The derived update struct can be exposed from the derived module which uses the type's name in
// snake_case
use self::user::Update;

Field Attributes

  • #[mongo(serde)]: tells the derive that the field should be handled using serde
  • #[mongo(skip)]: tells the derive to skip the field for field, filter & update

#[mongo(serde)]

Tells the derive that the field should be handled using serde

#[derive(Mongo)]
#[mongo(collection = "users")]
pub struct User {
    name: String,
    #[mongo(serde)]
    age: u32,
}

#[mongo(skip)]

Tells the derive to skip the field for field, filter & update

#[derive(Mongo)]
#[mongo(collection = "users")]
pub struct User {
    name: String,
    #[mongo(skip)]
    age: u32,
}