Expression Operators API
This page documents the expression operators for building MongoDB
aggregation expressions with Python operator syntax.
Field Reference
Field
Field reference with Python operator overloading support.
Enables natural Python syntax for building MongoDB expressions
(F("status") == "active") & (F("age") > 18)
Note: Use & instead of 'and', | instead of 'or', ~ instead of 'not'.
Parentheses are required due to operator precedence.
Example
F("age") > 18
GtExpr(left=Field("age"), right=18)
(F("status") == "active") & (F("age") > 18)
AndExpr([EqExpr(...), GtExpr(...)])
Source code in mongo_aggro/expressions/base.py
| class Field:
"""
Field reference with Python operator overloading support.
Enables natural Python syntax for building MongoDB expressions:
>>> (F("status") == "active") & (F("age") > 18)
Note: Use & instead of 'and', | instead of 'or', ~ instead of 'not'.
Parentheses are required due to operator precedence.
Example:
>>> F("age") > 18
GtExpr(left=Field("age"), right=18)
>>> (F("status") == "active") & (F("age") > 18)
AndExpr([EqExpr(...), GtExpr(...)])
"""
__slots__ = ("_path",)
def __init__(self, path: str) -> None:
"""
Initialize a field reference.
Args:
path: Field path (with or without $ prefix)
"""
self._path = path if path.startswith("$") else f"${path}"
def __str__(self) -> str:
"""Return the field path with $ prefix."""
return self._path
def __repr__(self) -> str:
"""Return a string representation for debugging."""
return f"Field({self._path!r})"
def __hash__(self) -> int:
"""Make Field hashable."""
return hash(self._path)
# Comparison operators - return expression objects
def __eq__(self, other: Any) -> "EqExpr": # type: ignore[override]
"""Create equality expression: F("field") == value."""
from mongo_aggro.expressions.comparison import EqExpr
return EqExpr(left=self, right=other)
def __ne__(self, other: Any) -> "NeExpr": # type: ignore[override]
"""Create not-equal expression: F("field") != value."""
from mongo_aggro.expressions.comparison import NeExpr
return NeExpr(left=self, right=other)
def __gt__(self, other: Any) -> "GtExpr":
"""Create greater-than expression: F("field") > value."""
from mongo_aggro.expressions.comparison import GtExpr
return GtExpr(left=self, right=other)
def __ge__(self, other: Any) -> "GteExpr":
"""Create greater-than-or-equal expression: F("field") >= value."""
from mongo_aggro.expressions.comparison import GteExpr
return GteExpr(left=self, right=other)
def __lt__(self, other: Any) -> "LtExpr":
"""Create less-than expression: F("field") < value."""
from mongo_aggro.expressions.comparison import LtExpr
return LtExpr(left=self, right=other)
def __le__(self, other: Any) -> "LteExpr":
"""Create less-than-or-equal expression: F("field") <= value."""
from mongo_aggro.expressions.comparison import LteExpr
return LteExpr(left=self, right=other)
|
__init__
__init__(path: str) -> None
Initialize a field reference.
Parameters:
| Name |
Type |
Description |
Default |
path
|
str
|
Field path (with or without $ prefix)
|
required
|
Source code in mongo_aggro/expressions/base.py
| def __init__(self, path: str) -> None:
"""
Initialize a field reference.
Args:
path: Field path (with or without $ prefix)
"""
self._path = path if path.startswith("$") else f"${path}"
|
__str__
Return the field path with $ prefix.
Source code in mongo_aggro/expressions/base.py
| def __str__(self) -> str:
"""Return the field path with $ prefix."""
return self._path
|
__repr__
Return a string representation for debugging.
Source code in mongo_aggro/expressions/base.py
| def __repr__(self) -> str:
"""Return a string representation for debugging."""
return f"Field({self._path!r})"
|
__hash__
Make Field hashable.
Source code in mongo_aggro/expressions/base.py
| def __hash__(self) -> int:
"""Make Field hashable."""
return hash(self._path)
|
__eq__
__eq__(other: Any) -> EqExpr
Create equality expression: F("field") == value.
Source code in mongo_aggro/expressions/base.py
| def __eq__(self, other: Any) -> "EqExpr": # type: ignore[override]
"""Create equality expression: F("field") == value."""
from mongo_aggro.expressions.comparison import EqExpr
return EqExpr(left=self, right=other)
|
__ne__
__ne__(other: Any) -> NeExpr
Create not-equal expression: F("field") != value.
Source code in mongo_aggro/expressions/base.py
| def __ne__(self, other: Any) -> "NeExpr": # type: ignore[override]
"""Create not-equal expression: F("field") != value."""
from mongo_aggro.expressions.comparison import NeExpr
return NeExpr(left=self, right=other)
|
__gt__
__gt__(other: Any) -> GtExpr
Create greater-than expression: F("field") > value.
Source code in mongo_aggro/expressions/base.py
| def __gt__(self, other: Any) -> "GtExpr":
"""Create greater-than expression: F("field") > value."""
from mongo_aggro.expressions.comparison import GtExpr
return GtExpr(left=self, right=other)
|
__ge__
__ge__(other: Any) -> GteExpr
Create greater-than-or-equal expression: F("field") >= value.
Source code in mongo_aggro/expressions/base.py
| def __ge__(self, other: Any) -> "GteExpr":
"""Create greater-than-or-equal expression: F("field") >= value."""
from mongo_aggro.expressions.comparison import GteExpr
return GteExpr(left=self, right=other)
|
__lt__
__lt__(other: Any) -> LtExpr
Create less-than expression: F("field") < value.
Source code in mongo_aggro/expressions/base.py
| def __lt__(self, other: Any) -> "LtExpr":
"""Create less-than expression: F("field") < value."""
from mongo_aggro.expressions.comparison import LtExpr
return LtExpr(left=self, right=other)
|
__le__
__le__(other: Any) -> LteExpr
Create less-than-or-equal expression: F("field") <= value.
Source code in mongo_aggro/expressions/base.py
| def __le__(self, other: Any) -> "LteExpr":
"""Create less-than-or-equal expression: F("field") <= value."""
from mongo_aggro.expressions.comparison import LteExpr
return LteExpr(left=self, right=other)
|
F
Create a field reference with operator overloading support.
This is the primary way to reference document fields in expressions.
Returns a Field object that supports Python comparison operators.
Parameters:
| Name |
Type |
Description |
Default |
path
|
str
|
Field path (e.g., "status", "user.name", "$existing_ref")
|
required
|
Returns:
| Type |
Description |
Field
|
Field object with operator overloading
|
Example
F("status") == "active"
EqExpr(left=Field("$status"), right="active")
F("price") > F("cost")
GtExpr(left=Field("$price"), right=Field("$cost"))
Source code in mongo_aggro/expressions/base.py
| def F(path: str) -> Field:
"""
Create a field reference with operator overloading support.
This is the primary way to reference document fields in expressions.
Returns a Field object that supports Python comparison operators.
Args:
path: Field path (e.g., "status", "user.name", "$existing_ref")
Returns:
Field object with operator overloading
Example:
>>> F("status") == "active"
EqExpr(left=Field("$status"), right="active")
>>> F("price") > F("cost")
GtExpr(left=Field("$price"), right=Field("$cost"))
"""
return Field(path)
|
Expression Base
ExpressionBase
Bases: BaseModel
Base class for all MongoDB expression operators.
Provides logical operator support (&, |, ~) for combining expressions.
All expression subclasses should inherit from this class.
Source code in mongo_aggro/expressions/base.py
| class ExpressionBase(BaseModel):
"""
Base class for all MongoDB expression operators.
Provides logical operator support (&, |, ~) for combining expressions.
All expression subclasses should inherit from this class.
"""
model_config = ConfigDict(
populate_by_name=True,
extra="forbid",
arbitrary_types_allowed=True,
)
def __and__(self, other: "ExpressionBase | dict[str, Any]") -> "AndExpr":
"""
Combine expressions with AND: expr1 & expr2.
Automatically flattens nested ANDs for cleaner output.
"""
from mongo_aggro.expressions.logical import AndExpr
left = self.conditions if isinstance(self, AndExpr) else [self]
if isinstance(other, AndExpr):
right = other.conditions
else:
right = [other]
return AndExpr(conditions=left + right)
def __or__(self, other: "ExpressionBase | dict[str, Any]") -> "OrExpr":
"""
Combine expressions with OR: expr1 | expr2.
Automatically flattens nested ORs for cleaner output.
"""
from mongo_aggro.expressions.logical import OrExpr
left = self.conditions if isinstance(self, OrExpr) else [self]
if isinstance(other, OrExpr):
right = other.conditions
else:
right = [other]
return OrExpr(conditions=left + right)
def __invert__(self) -> "NotExpr":
"""Negate expression with NOT: ~expr."""
from mongo_aggro.expressions.logical import NotExpr
return NotExpr(condition=self)
|
__and__
__and__(other: ExpressionBase | dict[str, Any]) -> AndExpr
Combine expressions with AND: expr1 & expr2.
Automatically flattens nested ANDs for cleaner output.
Source code in mongo_aggro/expressions/base.py
| def __and__(self, other: "ExpressionBase | dict[str, Any]") -> "AndExpr":
"""
Combine expressions with AND: expr1 & expr2.
Automatically flattens nested ANDs for cleaner output.
"""
from mongo_aggro.expressions.logical import AndExpr
left = self.conditions if isinstance(self, AndExpr) else [self]
if isinstance(other, AndExpr):
right = other.conditions
else:
right = [other]
return AndExpr(conditions=left + right)
|
__or__
__or__(other: ExpressionBase | dict[str, Any]) -> OrExpr
Combine expressions with OR: expr1 | expr2.
Automatically flattens nested ORs for cleaner output.
Source code in mongo_aggro/expressions/base.py
| def __or__(self, other: "ExpressionBase | dict[str, Any]") -> "OrExpr":
"""
Combine expressions with OR: expr1 | expr2.
Automatically flattens nested ORs for cleaner output.
"""
from mongo_aggro.expressions.logical import OrExpr
left = self.conditions if isinstance(self, OrExpr) else [self]
if isinstance(other, OrExpr):
right = other.conditions
else:
right = [other]
return OrExpr(conditions=left + right)
|
__invert__
Negate expression with NOT: ~expr.
Source code in mongo_aggro/expressions/base.py
| def __invert__(self) -> "NotExpr":
"""Negate expression with NOT: ~expr."""
from mongo_aggro.expressions.logical import NotExpr
return NotExpr(condition=self)
|
Comparison Expressions
These expressions are created using Python comparison operators on Field
objects.
EqExpr
Bases: ExpressionBase
$eq expression operator - tests equality.
Example
EqExpr(left=F("status"), right="active").model_dump()
Source code in mongo_aggro/expressions/comparison.py
| class EqExpr(ExpressionBase):
"""
$eq expression operator - tests equality.
Example:
>>> EqExpr(left=F("status"), right="active").model_dump()
{"$eq": ["$status", "active"]}
"""
left: Any
right: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $eq expression."""
return {
"$eq": [serialize_value(self.left), serialize_value(self.right)]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $eq expression.
Source code in mongo_aggro/expressions/comparison.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $eq expression."""
return {
"$eq": [serialize_value(self.left), serialize_value(self.right)]
}
|
NeExpr
Bases: ExpressionBase
$ne expression operator - tests inequality.
Example
NeExpr(left=F("status"), right="deleted").model_dump()
Source code in mongo_aggro/expressions/comparison.py
| class NeExpr(ExpressionBase):
"""
$ne expression operator - tests inequality.
Example:
>>> NeExpr(left=F("status"), right="deleted").model_dump()
{"$ne": ["$status", "deleted"]}
"""
left: Any
right: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ne expression."""
return {
"$ne": [serialize_value(self.left), serialize_value(self.right)]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $ne expression.
Source code in mongo_aggro/expressions/comparison.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ne expression."""
return {
"$ne": [serialize_value(self.left), serialize_value(self.right)]
}
|
GtExpr
Bases: ExpressionBase
$gt expression operator - tests greater than.
Example
GtExpr(left=F("age"), right=18).model_dump()
Source code in mongo_aggro/expressions/comparison.py
| class GtExpr(ExpressionBase):
"""
$gt expression operator - tests greater than.
Example:
>>> GtExpr(left=F("age"), right=18).model_dump()
{"$gt": ["$age", 18]}
"""
left: Any
right: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $gt expression."""
return {
"$gt": [serialize_value(self.left), serialize_value(self.right)]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $gt expression.
Source code in mongo_aggro/expressions/comparison.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $gt expression."""
return {
"$gt": [serialize_value(self.left), serialize_value(self.right)]
}
|
GteExpr
Bases: ExpressionBase
$gte expression operator - tests greater than or equal.
Example
GteExpr(left=F("age"), right=18).model_dump()
Source code in mongo_aggro/expressions/comparison.py
| class GteExpr(ExpressionBase):
"""
$gte expression operator - tests greater than or equal.
Example:
>>> GteExpr(left=F("age"), right=18).model_dump()
{"$gte": ["$age", 18]}
"""
left: Any
right: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $gte expression."""
return {
"$gte": [serialize_value(self.left), serialize_value(self.right)]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $gte expression.
Source code in mongo_aggro/expressions/comparison.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $gte expression."""
return {
"$gte": [serialize_value(self.left), serialize_value(self.right)]
}
|
LtExpr
Bases: ExpressionBase
$lt expression operator - tests less than.
Example
LtExpr(left=F("age"), right=65).model_dump()
Source code in mongo_aggro/expressions/comparison.py
| class LtExpr(ExpressionBase):
"""
$lt expression operator - tests less than.
Example:
>>> LtExpr(left=F("age"), right=65).model_dump()
{"$lt": ["$age", 65]}
"""
left: Any
right: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $lt expression."""
return {
"$lt": [serialize_value(self.left), serialize_value(self.right)]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $lt expression.
Source code in mongo_aggro/expressions/comparison.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $lt expression."""
return {
"$lt": [serialize_value(self.left), serialize_value(self.right)]
}
|
LteExpr
Bases: ExpressionBase
$lte expression operator - tests less than or equal.
Example
LteExpr(left=F("age"), right=65).model_dump()
Source code in mongo_aggro/expressions/comparison.py
| class LteExpr(ExpressionBase):
"""
$lte expression operator - tests less than or equal.
Example:
>>> LteExpr(left=F("age"), right=65).model_dump()
{"$lte": ["$age", 65]}
"""
left: Any
right: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $lte expression."""
return {
"$lte": [serialize_value(self.left), serialize_value(self.right)]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $lte expression.
Source code in mongo_aggro/expressions/comparison.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $lte expression."""
return {
"$lte": [serialize_value(self.left), serialize_value(self.right)]
}
|
CmpExpr
Bases: ExpressionBase
$cmp expression operator - compares two values.
Returns -1 if first < second, 0 if equal, 1 if first > second.
Example
CmpExpr(left=F("a"), right=F("b")).model_dump()
Source code in mongo_aggro/expressions/comparison.py
| class CmpExpr(ExpressionBase):
"""
$cmp expression operator - compares two values.
Returns -1 if first < second, 0 if equal, 1 if first > second.
Example:
>>> CmpExpr(left=F("a"), right=F("b")).model_dump()
{"$cmp": ["$a", "$b"]}
"""
left: Any
right: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $cmp expression."""
return {
"$cmp": [serialize_value(self.left), serialize_value(self.right)]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $cmp expression.
Source code in mongo_aggro/expressions/comparison.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $cmp expression."""
return {
"$cmp": [serialize_value(self.left), serialize_value(self.right)]
}
|
Logical Expressions
These expressions combine comparison expressions using &, |, and ~.
AndExpr
Bases: ExpressionBase
$and expression operator - logical AND.
Example
AndExpr(conditions=[
... EqExpr(left=F("a"), right=1),
... GtExpr(left=F("b"), right=2)
... ]).model_dump()
{"$and": [{"$eq": ["$a", 1]}, {"$gt": ["$b", 2]}]}
Source code in mongo_aggro/expressions/logical.py
| class AndExpr(ExpressionBase):
"""
$and expression operator - logical AND.
Example:
>>> AndExpr(conditions=[
... EqExpr(left=F("a"), right=1),
... GtExpr(left=F("b"), right=2)
... ]).model_dump()
{"$and": [{"$eq": ["$a", 1]}, {"$gt": ["$b", 2]}]}
"""
conditions: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $and expression."""
return {"$and": [serialize_value(c) for c in self.conditions]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $and expression.
Source code in mongo_aggro/expressions/logical.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $and expression."""
return {"$and": [serialize_value(c) for c in self.conditions]}
|
OrExpr
Bases: ExpressionBase
$or expression operator - logical OR.
Example
OrExpr(conditions=[
... EqExpr(left=F("a"), right=1),
... EqExpr(left=F("a"), right=2)
... ]).model_dump()
{"$or": [{"$eq": ["$a", 1]}, {"$eq": ["$a", 2]}]}
Source code in mongo_aggro/expressions/logical.py
| class OrExpr(ExpressionBase):
"""
$or expression operator - logical OR.
Example:
>>> OrExpr(conditions=[
... EqExpr(left=F("a"), right=1),
... EqExpr(left=F("a"), right=2)
... ]).model_dump()
{"$or": [{"$eq": ["$a", 1]}, {"$eq": ["$a", 2]}]}
"""
conditions: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $or expression."""
return {"$or": [serialize_value(c) for c in self.conditions]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $or expression.
Source code in mongo_aggro/expressions/logical.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $or expression."""
return {"$or": [serialize_value(c) for c in self.conditions]}
|
NotExpr
Bases: ExpressionBase
$not expression operator - logical NOT.
Example
NotExpr(condition=EqExpr(left=F("a"), right=1)).model_dump()
{"$not": {"$eq": ["$a", 1]}}
Source code in mongo_aggro/expressions/logical.py
| class NotExpr(ExpressionBase):
"""
$not expression operator - logical NOT.
Example:
>>> NotExpr(condition=EqExpr(left=F("a"), right=1)).model_dump()
{"$not": {"$eq": ["$a", 1]}}
"""
condition: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $not expression."""
return {"$not": serialize_value(self.condition)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $not expression.
Source code in mongo_aggro/expressions/logical.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $not expression."""
return {"$not": serialize_value(self.condition)}
|
Arithmetic Expressions
AddExpr
Bases: ExpressionBase
$add expression operator - adds numbers or dates.
Example
AddExpr(operands=[F("price"), F("tax")]).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class AddExpr(ExpressionBase):
"""
$add expression operator - adds numbers or dates.
Example:
>>> AddExpr(operands=[F("price"), F("tax")]).model_dump()
{"$add": ["$price", "$tax"]}
"""
operands: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $add expression."""
return {"$add": [serialize_value(o) for o in self.operands]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $add expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $add expression."""
return {"$add": [serialize_value(o) for o in self.operands]}
|
SubtractExpr
Bases: ExpressionBase
$subtract expression operator - subtracts two numbers or dates.
Example
SubtractExpr(left=F("total"), right=F("discount")).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class SubtractExpr(ExpressionBase):
"""
$subtract expression operator - subtracts two numbers or dates.
Example:
>>> SubtractExpr(left=F("total"), right=F("discount")).model_dump()
{"$subtract": ["$total", "$discount"]}
"""
left: Any
right: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $subtract expression."""
return {
"$subtract": [
serialize_value(self.left),
serialize_value(self.right),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $subtract expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $subtract expression."""
return {
"$subtract": [
serialize_value(self.left),
serialize_value(self.right),
]
}
|
MultiplyExpr
Bases: ExpressionBase
$multiply expression operator - multiplies numbers.
Example
MultiplyExpr(operands=[F("price"), F("qty")]).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class MultiplyExpr(ExpressionBase):
"""
$multiply expression operator - multiplies numbers.
Example:
>>> MultiplyExpr(operands=[F("price"), F("qty")]).model_dump()
{"$multiply": ["$price", "$qty"]}
"""
operands: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $multiply expression."""
return {"$multiply": [serialize_value(o) for o in self.operands]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $multiply expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $multiply expression."""
return {"$multiply": [serialize_value(o) for o in self.operands]}
|
DivideExpr
Bases: ExpressionBase
$divide expression operator - divides two numbers.
Example
DivideExpr(dividend=F("total"), divisor=F("count")).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class DivideExpr(ExpressionBase):
"""
$divide expression operator - divides two numbers.
Example:
>>> DivideExpr(dividend=F("total"), divisor=F("count")).model_dump()
{"$divide": ["$total", "$count"]}
"""
dividend: Any
divisor: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $divide expression."""
return {
"$divide": [
serialize_value(self.dividend),
serialize_value(self.divisor),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $divide expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $divide expression."""
return {
"$divide": [
serialize_value(self.dividend),
serialize_value(self.divisor),
]
}
|
AbsExpr
Bases: ExpressionBase
$abs expression operator - returns absolute value.
Example
AbsExpr(value=F("balance")).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class AbsExpr(ExpressionBase):
"""
$abs expression operator - returns absolute value.
Example:
>>> AbsExpr(value=F("balance")).model_dump()
{"$abs": "$balance"}
"""
value: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $abs expression."""
return {"$abs": serialize_value(self.value)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $abs expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $abs expression."""
return {"$abs": serialize_value(self.value)}
|
ModExpr
Bases: ExpressionBase
$mod expression operator - returns remainder of division.
Example
ModExpr(dividend=F("num"), divisor=2).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class ModExpr(ExpressionBase):
"""
$mod expression operator - returns remainder of division.
Example:
>>> ModExpr(dividend=F("num"), divisor=2).model_dump()
{"$mod": ["$num", 2]}
"""
dividend: Any
divisor: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $mod expression."""
return {
"$mod": [
serialize_value(self.dividend),
serialize_value(self.divisor),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $mod expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $mod expression."""
return {
"$mod": [
serialize_value(self.dividend),
serialize_value(self.divisor),
]
}
|
Conditional Expressions
CondExpr
Bases: ExpressionBase
$cond expression operator - ternary conditional.
Example
CondExpr(
... if_=GtExpr(left=F("qty"), right=100),
... then="bulk",
... else_="retail"
... ).model_dump()
{"$cond": {"if": {"$gt": ["$qty", 100]}, "then": "bulk", "else": "retail"}}
Source code in mongo_aggro/expressions/conditional.py
| class CondExpr(ExpressionBase):
"""
$cond expression operator - ternary conditional.
Example:
>>> CondExpr(
... if_=GtExpr(left=F("qty"), right=100),
... then="bulk",
... else_="retail"
... ).model_dump()
{"$cond": {"if": {"$gt": ["$qty", 100]}, "then": "bulk", "else": "retail"}}
"""
if_: Any
then: Any
else_: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $cond expression."""
return {
"$cond": {
"if": serialize_value(self.if_),
"then": serialize_value(self.then),
"else": serialize_value(self.else_),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $cond expression.
Source code in mongo_aggro/expressions/conditional.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $cond expression."""
return {
"$cond": {
"if": serialize_value(self.if_),
"then": serialize_value(self.then),
"else": serialize_value(self.else_),
}
}
|
IfNullExpr
Bases: ExpressionBase
$ifNull expression operator - null coalescing.
Example
IfNullExpr(input=F("name"), replacement="Unknown").model_dump()
Source code in mongo_aggro/expressions/conditional.py
| class IfNullExpr(ExpressionBase):
"""
$ifNull expression operator - null coalescing.
Example:
>>> IfNullExpr(input=F("name"), replacement="Unknown").model_dump()
{"$ifNull": ["$name", "Unknown"]}
"""
input: Any
replacement: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ifNull expression."""
return {
"$ifNull": [
serialize_value(self.input),
serialize_value(self.replacement),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $ifNull expression.
Source code in mongo_aggro/expressions/conditional.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ifNull expression."""
return {
"$ifNull": [
serialize_value(self.input),
serialize_value(self.replacement),
]
}
|
SwitchExpr
Bases: ExpressionBase
$switch expression operator - multi-branch conditional.
Example
SwitchExpr(
... branches=[
... SwitchBranch(case=EqExpr(left=F("status"), right="A"), then=1),
... SwitchBranch(case=EqExpr(left=F("status"), right="B"), then=2),
... ],
... default=0
... ).model_dump()
{"$switch": {"branches": [...], "default": 0}}
Source code in mongo_aggro/expressions/conditional.py
| class SwitchExpr(ExpressionBase):
"""
$switch expression operator - multi-branch conditional.
Example:
>>> SwitchExpr(
... branches=[
... SwitchBranch(case=EqExpr(left=F("status"), right="A"), then=1),
... SwitchBranch(case=EqExpr(left=F("status"), right="B"), then=2),
... ],
... default=0
... ).model_dump()
{"$switch": {"branches": [...], "default": 0}}
"""
branches: list[SwitchBranch]
default: Any = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $switch expression."""
result: dict[str, Any] = {
"$switch": {
"branches": [
{
"case": serialize_value(b.case),
"then": serialize_value(b.then),
}
for b in self.branches
]
}
}
if self.default is not None:
result["$switch"]["default"] = serialize_value(self.default)
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $switch expression.
Source code in mongo_aggro/expressions/conditional.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $switch expression."""
result: dict[str, Any] = {
"$switch": {
"branches": [
{
"case": serialize_value(b.case),
"then": serialize_value(b.then),
}
for b in self.branches
]
}
}
if self.default is not None:
result["$switch"]["default"] = serialize_value(self.default)
return result
|
SwitchBranch
Bases: BaseModel
A single branch in a $switch expression.
Source code in mongo_aggro/expressions/conditional.py
| class SwitchBranch(BaseModel):
"""A single branch in a $switch expression."""
model_config = ConfigDict(
populate_by_name=True,
extra="forbid",
)
case: Any
then: Any
|
String Expressions
ConcatExpr
Bases: ExpressionBase
$concat expression operator - concatenates strings.
Example
ConcatExpr(strings=[F("first"), " ", F("last")]).model_dump()
Source code in mongo_aggro/expressions/string.py
| class ConcatExpr(ExpressionBase):
"""
$concat expression operator - concatenates strings.
Example:
>>> ConcatExpr(strings=[F("first"), " ", F("last")]).model_dump()
{"$concat": ["$first", " ", "$last"]}
"""
strings: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $concat expression."""
return {"$concat": [serialize_value(s) for s in self.strings]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $concat expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $concat expression."""
return {"$concat": [serialize_value(s) for s in self.strings]}
|
SplitExpr
Bases: ExpressionBase
$split expression operator - splits string by delimiter.
Example
SplitExpr(input=F("fullName"), delimiter=" ").model_dump()
Source code in mongo_aggro/expressions/string.py
| class SplitExpr(ExpressionBase):
"""
$split expression operator - splits string by delimiter.
Example:
>>> SplitExpr(input=F("fullName"), delimiter=" ").model_dump()
{"$split": ["$fullName", " "]}
"""
input: Any
delimiter: str
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $split expression."""
return {"$split": [serialize_value(self.input), self.delimiter]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $split expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $split expression."""
return {"$split": [serialize_value(self.input), self.delimiter]}
|
ToLowerExpr
Bases: ExpressionBase
$toLower expression operator - converts to lowercase.
Example
ToLowerExpr(input=F("name")).model_dump()
Source code in mongo_aggro/expressions/string.py
| class ToLowerExpr(ExpressionBase):
"""
$toLower expression operator - converts to lowercase.
Example:
>>> ToLowerExpr(input=F("name")).model_dump()
{"$toLower": "$name"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toLower expression."""
return {"$toLower": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toLower expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toLower expression."""
return {"$toLower": serialize_value(self.input)}
|
ToUpperExpr
Bases: ExpressionBase
$toUpper expression operator - converts to uppercase.
Example
ToUpperExpr(input=F("name")).model_dump()
Source code in mongo_aggro/expressions/string.py
| class ToUpperExpr(ExpressionBase):
"""
$toUpper expression operator - converts to uppercase.
Example:
>>> ToUpperExpr(input=F("name")).model_dump()
{"$toUpper": "$name"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toUpper expression."""
return {"$toUpper": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toUpper expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toUpper expression."""
return {"$toUpper": serialize_value(self.input)}
|
Array Expressions
ArraySizeExpr
Bases: ExpressionBase
$size expression operator - returns array length.
Example
ArraySizeExpr(array=F("items")).model_dump()
Source code in mongo_aggro/expressions/array.py
| class ArraySizeExpr(ExpressionBase):
"""
$size expression operator - returns array length.
Example:
>>> ArraySizeExpr(array=F("items")).model_dump()
{"$size": "$items"}
"""
array: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $size expression."""
return {"$size": serialize_value(self.array)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $size expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $size expression."""
return {"$size": serialize_value(self.array)}
|
SliceExpr
Bases: ExpressionBase
$slice expression operator - returns subset of array.
Example
SliceExpr(array=F("items"), n=5).model_dump()
SliceExpr(array=F("items"), position=2, n=3).model_dump()
Source code in mongo_aggro/expressions/array.py
| class SliceExpr(ExpressionBase):
"""
$slice expression operator - returns subset of array.
Example:
>>> SliceExpr(array=F("items"), n=5).model_dump()
{"$slice": ["$items", 5]}
>>> SliceExpr(array=F("items"), position=2, n=3).model_dump()
{"$slice": ["$items", 2, 3]}
"""
array: Any
n: int
position: int | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $slice expression."""
if self.position is not None:
return {
"$slice": [serialize_value(self.array), self.position, self.n]
}
return {"$slice": [serialize_value(self.array), self.n]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $slice expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $slice expression."""
if self.position is not None:
return {
"$slice": [serialize_value(self.array), self.position, self.n]
}
return {"$slice": [serialize_value(self.array), self.n]}
|
FilterExpr
Bases: ExpressionBase
$filter expression operator - filters array elements.
Example
FilterExpr(
... input=F("items"),
... as_="item",
... cond=GteExpr(left=Field("$$item.price"), right=100)
... ).model_dump()
{"$filter": {"input": "$items", "as": "item", "cond": {...}}}
Source code in mongo_aggro/expressions/array.py
| class FilterExpr(ExpressionBase):
"""
$filter expression operator - filters array elements.
Example:
>>> FilterExpr(
... input=F("items"),
... as_="item",
... cond=GteExpr(left=Field("$$item.price"), right=100)
... ).model_dump()
{"$filter": {"input": "$items", "as": "item", "cond": {...}}}
"""
input: Any
cond: Any
as_: str = "this"
limit: int | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $filter expression."""
result: dict[str, Any] = {
"$filter": {
"input": serialize_value(self.input),
"as": self.as_,
"cond": serialize_value(self.cond),
}
}
if self.limit is not None:
result["$filter"]["limit"] = self.limit
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $filter expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $filter expression."""
result: dict[str, Any] = {
"$filter": {
"input": serialize_value(self.input),
"as": self.as_,
"cond": serialize_value(self.cond),
}
}
if self.limit is not None:
result["$filter"]["limit"] = self.limit
return result
|
MapExpr
Bases: ExpressionBase
$map expression operator - applies expression to each array element.
Example
MapExpr(
... input=F("items"),
... as_="item",
... in_=MultiplyExpr(operands=[Field("$$item.price"), 1.1])
... ).model_dump()
{"$map": {"input": "$items", "as": "item", "in": {...}}}
Source code in mongo_aggro/expressions/array.py
| class MapExpr(ExpressionBase):
"""
$map expression operator - applies expression to each array element.
Example:
>>> MapExpr(
... input=F("items"),
... as_="item",
... in_=MultiplyExpr(operands=[Field("$$item.price"), 1.1])
... ).model_dump()
{"$map": {"input": "$items", "as": "item", "in": {...}}}
"""
input: Any
in_: Any
as_: str = "this"
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $map expression."""
return {
"$map": {
"input": serialize_value(self.input),
"as": self.as_,
"in": serialize_value(self.in_),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $map expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $map expression."""
return {
"$map": {
"input": serialize_value(self.input),
"as": self.as_,
"in": serialize_value(self.in_),
}
}
|
ReduceExpr
Bases: ExpressionBase
$reduce expression operator - reduces array to single value.
Example
ReduceExpr(
... input=F("items"),
... initial_value=0,
... in_=AddExpr(operands=[Field("$$value"), Field("$$this.qty")])
... ).model_dump()
{"$reduce": {"input": "$items", "initialValue": 0, "in": {...}}}
Source code in mongo_aggro/expressions/array.py
| class ReduceExpr(ExpressionBase):
"""
$reduce expression operator - reduces array to single value.
Example:
>>> ReduceExpr(
... input=F("items"),
... initial_value=0,
... in_=AddExpr(operands=[Field("$$value"), Field("$$this.qty")])
... ).model_dump()
{"$reduce": {"input": "$items", "initialValue": 0, "in": {...}}}
"""
input: Any
initial_value: Any
in_: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $reduce expression."""
return {
"$reduce": {
"input": serialize_value(self.input),
"initialValue": serialize_value(self.initial_value),
"in": serialize_value(self.in_),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $reduce expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $reduce expression."""
return {
"$reduce": {
"input": serialize_value(self.input),
"initialValue": serialize_value(self.initial_value),
"in": serialize_value(self.in_),
}
}
|
Date Expressions
DateAddExpr
Bases: ExpressionBase
$dateAdd expression operator - adds time to a date.
Example
DateAddExpr(
... start_date=F("orderDate"),
... unit="day",
... amount=7
... ).model_dump()
{"$dateAdd": {"startDate": "$orderDate", "unit": "day", "amount": 7}}
Source code in mongo_aggro/expressions/date.py
| class DateAddExpr(ExpressionBase):
"""
$dateAdd expression operator - adds time to a date.
Example:
>>> DateAddExpr(
... start_date=F("orderDate"),
... unit="day",
... amount=7
... ).model_dump()
{"$dateAdd": {"startDate": "$orderDate", "unit": "day", "amount": 7}}
"""
start_date: Any
unit: str
amount: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateAdd expression."""
result: dict[str, Any] = {
"$dateAdd": {
"startDate": serialize_value(self.start_date),
"unit": self.unit,
"amount": serialize_value(self.amount),
}
}
if self.timezone:
result["$dateAdd"]["timezone"] = self.timezone
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dateAdd expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateAdd expression."""
result: dict[str, Any] = {
"$dateAdd": {
"startDate": serialize_value(self.start_date),
"unit": self.unit,
"amount": serialize_value(self.amount),
}
}
if self.timezone:
result["$dateAdd"]["timezone"] = self.timezone
return result
|
DateSubtractExpr
Bases: ExpressionBase
$dateSubtract expression operator - subtracts time from a date.
Example
DateSubtractExpr(
... start_date=F("endDate"),
... unit="month",
... amount=1
... ).model_dump()
{"$dateSubtract": {"startDate": "$endDate", "unit": "month", "amount": 1}}
Source code in mongo_aggro/expressions/date.py
| class DateSubtractExpr(ExpressionBase):
"""
$dateSubtract expression operator - subtracts time from a date.
Example:
>>> DateSubtractExpr(
... start_date=F("endDate"),
... unit="month",
... amount=1
... ).model_dump()
{"$dateSubtract": {"startDate": "$endDate", "unit": "month", "amount": 1}}
"""
start_date: Any
unit: str
amount: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateSubtract expression."""
result: dict[str, Any] = {
"$dateSubtract": {
"startDate": serialize_value(self.start_date),
"unit": self.unit,
"amount": serialize_value(self.amount),
}
}
if self.timezone:
result["$dateSubtract"]["timezone"] = self.timezone
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dateSubtract expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateSubtract expression."""
result: dict[str, Any] = {
"$dateSubtract": {
"startDate": serialize_value(self.start_date),
"unit": self.unit,
"amount": serialize_value(self.amount),
}
}
if self.timezone:
result["$dateSubtract"]["timezone"] = self.timezone
return result
|
DateDiffExpr
Bases: ExpressionBase
$dateDiff expression operator - calculates difference between dates.
Example
DateDiffExpr(
... start_date=F("start"),
... end_date=F("end"),
... unit="day"
... ).model_dump()
{"$dateDiff": {"startDate": "$start", "endDate": "$end", "unit": "day"}}
Source code in mongo_aggro/expressions/date.py
| class DateDiffExpr(ExpressionBase):
"""
$dateDiff expression operator - calculates difference between dates.
Example:
>>> DateDiffExpr(
... start_date=F("start"),
... end_date=F("end"),
... unit="day"
... ).model_dump()
{"$dateDiff": {"startDate": "$start", "endDate": "$end", "unit": "day"}}
"""
start_date: Any
end_date: Any
unit: str
timezone: str | None = None
start_of_week: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateDiff expression."""
result: dict[str, Any] = {
"$dateDiff": {
"startDate": serialize_value(self.start_date),
"endDate": serialize_value(self.end_date),
"unit": self.unit,
}
}
if self.timezone:
result["$dateDiff"]["timezone"] = self.timezone
if self.start_of_week:
result["$dateDiff"]["startOfWeek"] = self.start_of_week
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dateDiff expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateDiff expression."""
result: dict[str, Any] = {
"$dateDiff": {
"startDate": serialize_value(self.start_date),
"endDate": serialize_value(self.end_date),
"unit": self.unit,
}
}
if self.timezone:
result["$dateDiff"]["timezone"] = self.timezone
if self.start_of_week:
result["$dateDiff"]["startOfWeek"] = self.start_of_week
return result
|
DateToStringExpr
Bases: ExpressionBase
$dateToString expression operator - converts date to string.
Example
DateToStringExpr(
... date=F("orderDate"),
... format="%Y-%m-%d"
... ).model_dump()
{"$dateToString": {"date": "$orderDate", "format": "%Y-%m-%d"}}
Source code in mongo_aggro/expressions/date.py
| class DateToStringExpr(ExpressionBase):
"""
$dateToString expression operator - converts date to string.
Example:
>>> DateToStringExpr(
... date=F("orderDate"),
... format="%Y-%m-%d"
... ).model_dump()
{"$dateToString": {"date": "$orderDate", "format": "%Y-%m-%d"}}
"""
date: Any
format: str | None = None
timezone: str | None = None
on_null: Any = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateToString expression."""
result: dict[str, Any] = {
"$dateToString": {
"date": serialize_value(self.date),
}
}
if self.format:
result["$dateToString"]["format"] = self.format
if self.timezone:
result["$dateToString"]["timezone"] = self.timezone
if self.on_null is not None:
result["$dateToString"]["onNull"] = serialize_value(self.on_null)
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dateToString expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateToString expression."""
result: dict[str, Any] = {
"$dateToString": {
"date": serialize_value(self.date),
}
}
if self.format:
result["$dateToString"]["format"] = self.format
if self.timezone:
result["$dateToString"]["timezone"] = self.timezone
if self.on_null is not None:
result["$dateToString"]["onNull"] = serialize_value(self.on_null)
return result
|
DateFromStringExpr
Bases: ExpressionBase
$dateFromString expression operator - parses string to date.
Example
DateFromStringExpr(
... date_string=F("dateStr"),
... format="%Y-%m-%d"
... ).model_dump()
{"$dateFromString": {"dateString": "$dateStr", "format": "%Y-%m-%d"}}
Source code in mongo_aggro/expressions/date.py
| class DateFromStringExpr(ExpressionBase):
"""
$dateFromString expression operator - parses string to date.
Example:
>>> DateFromStringExpr(
... date_string=F("dateStr"),
... format="%Y-%m-%d"
... ).model_dump()
{"$dateFromString": {"dateString": "$dateStr", "format": "%Y-%m-%d"}}
"""
date_string: Any
format: str | None = None
timezone: str | None = None
on_error: Any = None
on_null: Any = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateFromString expression."""
result: dict[str, Any] = {
"$dateFromString": {
"dateString": serialize_value(self.date_string),
}
}
if self.format:
result["$dateFromString"]["format"] = self.format
if self.timezone:
result["$dateFromString"]["timezone"] = self.timezone
if self.on_error is not None:
result["$dateFromString"]["onError"] = serialize_value(
self.on_error
)
if self.on_null is not None:
result["$dateFromString"]["onNull"] = serialize_value(self.on_null)
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dateFromString expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateFromString expression."""
result: dict[str, Any] = {
"$dateFromString": {
"dateString": serialize_value(self.date_string),
}
}
if self.format:
result["$dateFromString"]["format"] = self.format
if self.timezone:
result["$dateFromString"]["timezone"] = self.timezone
if self.on_error is not None:
result["$dateFromString"]["onError"] = serialize_value(
self.on_error
)
if self.on_null is not None:
result["$dateFromString"]["onNull"] = serialize_value(self.on_null)
return result
|
Type Conversion Expressions
ToDateExpr
Bases: ExpressionBase
$toDate expression operator - converts value to date.
Example
ToDateExpr(input=F("dateString")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class ToDateExpr(ExpressionBase):
"""
$toDate expression operator - converts value to date.
Example:
>>> ToDateExpr(input=F("dateString")).model_dump()
{"$toDate": "$dateString"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toDate expression."""
return {"$toDate": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toDate expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toDate expression."""
return {"$toDate": serialize_value(self.input)}
|
ToStringExpr
Bases: ExpressionBase
$toString expression operator - converts value to string.
Example
ToStringExpr(input=F("numericId")).model_dump()
Source code in mongo_aggro/expressions/type.py
| class ToStringExpr(ExpressionBase):
"""
$toString expression operator - converts value to string.
Example:
>>> ToStringExpr(input=F("numericId")).model_dump()
{"$toString": "$numericId"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toString expression."""
return {"$toString": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toString expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toString expression."""
return {"$toString": serialize_value(self.input)}
|
ToIntExpr
Bases: ExpressionBase
$toInt expression operator - converts value to integer.
Example
ToIntExpr(input=F("stringNum")).model_dump()
Source code in mongo_aggro/expressions/type.py
| class ToIntExpr(ExpressionBase):
"""
$toInt expression operator - converts value to integer.
Example:
>>> ToIntExpr(input=F("stringNum")).model_dump()
{"$toInt": "$stringNum"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toInt expression."""
return {"$toInt": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toInt expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toInt expression."""
return {"$toInt": serialize_value(self.input)}
|
ToDoubleExpr
Bases: ExpressionBase
$toDouble expression operator - converts value to double.
Example
ToDoubleExpr(input=F("intValue")).model_dump()
Source code in mongo_aggro/expressions/type.py
| class ToDoubleExpr(ExpressionBase):
"""
$toDouble expression operator - converts value to double.
Example:
>>> ToDoubleExpr(input=F("intValue")).model_dump()
{"$toDouble": "$intValue"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toDouble expression."""
return {"$toDouble": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toDouble expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toDouble expression."""
return {"$toDouble": serialize_value(self.input)}
|
ToBoolExpr
Bases: ExpressionBase
$toBool expression operator - converts value to boolean.
Example
ToBoolExpr(input=F("flag")).model_dump()
Source code in mongo_aggro/expressions/type.py
| class ToBoolExpr(ExpressionBase):
"""
$toBool expression operator - converts value to boolean.
Example:
>>> ToBoolExpr(input=F("flag")).model_dump()
{"$toBool": "$flag"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toBool expression."""
return {"$toBool": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toBool expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toBool expression."""
return {"$toBool": serialize_value(self.input)}
|
ToObjectIdExpr
Bases: ExpressionBase
$toObjectId expression operator - converts value to ObjectId.
Example
ToObjectIdExpr(input=F("idString")).model_dump()
Source code in mongo_aggro/expressions/type.py
| class ToObjectIdExpr(ExpressionBase):
"""
$toObjectId expression operator - converts value to ObjectId.
Example:
>>> ToObjectIdExpr(input=F("idString")).model_dump()
{"$toObjectId": "$idString"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toObjectId expression."""
return {"$toObjectId": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toObjectId expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toObjectId expression."""
return {"$toObjectId": serialize_value(self.input)}
|
ConvertExpr
Bases: ExpressionBase
$convert expression operator - converts value to specified type.
Example
ConvertExpr(input=F("value"), to="int").model_dump()
{"$convert": {"input": "$value", "to": "int"}}
Source code in mongo_aggro/expressions/type.py
| class ConvertExpr(ExpressionBase):
"""
$convert expression operator - converts value to specified type.
Example:
>>> ConvertExpr(input=F("value"), to="int").model_dump()
{"$convert": {"input": "$value", "to": "int"}}
"""
input: Any
to: str
on_error: Any = None
on_null: Any = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $convert expression."""
result: dict[str, Any] = {
"$convert": {
"input": serialize_value(self.input),
"to": self.to,
}
}
if self.on_error is not None:
result["$convert"]["onError"] = serialize_value(self.on_error)
if self.on_null is not None:
result["$convert"]["onNull"] = serialize_value(self.on_null)
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $convert expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $convert expression."""
result: dict[str, Any] = {
"$convert": {
"input": serialize_value(self.input),
"to": self.to,
}
}
if self.on_error is not None:
result["$convert"]["onError"] = serialize_value(self.on_error)
if self.on_null is not None:
result["$convert"]["onNull"] = serialize_value(self.on_null)
return result
|
TypeExpr
Bases: ExpressionBase
$type expression operator - returns BSON type of a value.
Example
TypeExpr(input=F("field")).model_dump()
Source code in mongo_aggro/expressions/type.py
| class TypeExpr(ExpressionBase):
"""
$type expression operator - returns BSON type of a value.
Example:
>>> TypeExpr(input=F("field")).model_dump()
{"$type": "$field"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $type expression."""
return {"$type": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $type expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $type expression."""
return {"$type": serialize_value(self.input)}
|
ToLongExpr
Bases: ExpressionBase
$toLong expression operator - converts value to long integer.
Example
ToLongExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/type.py
| class ToLongExpr(ExpressionBase):
"""
$toLong expression operator - converts value to long integer.
Example:
>>> ToLongExpr(input=F("value")).model_dump()
{"$toLong": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toLong expression."""
return {"$toLong": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toLong expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toLong expression."""
return {"$toLong": serialize_value(self.input)}
|
ToDecimalExpr
Bases: ExpressionBase
$toDecimal expression operator - converts value to Decimal128.
Example
ToDecimalExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/type.py
| class ToDecimalExpr(ExpressionBase):
"""
$toDecimal expression operator - converts value to Decimal128.
Example:
>>> ToDecimalExpr(input=F("value")).model_dump()
{"$toDecimal": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toDecimal expression."""
return {"$toDecimal": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $toDecimal expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $toDecimal expression."""
return {"$toDecimal": serialize_value(self.input)}
|
IsNumberExpr
Bases: ExpressionBase
$isNumber expression operator - checks if value is numeric.
Example
IsNumberExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/type.py
| class IsNumberExpr(ExpressionBase):
"""
$isNumber expression operator - checks if value is numeric.
Example:
>>> IsNumberExpr(input=F("value")).model_dump()
{"$isNumber": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isNumber expression."""
return {"$isNumber": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $isNumber expression.
Source code in mongo_aggro/expressions/type.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isNumber expression."""
return {"$isNumber": serialize_value(self.input)}
|
Set Expressions
SetUnionExpr
Bases: ExpressionBase
$setUnion expression operator - returns union of arrays (unique values).
Example
SetUnionExpr(arrays=[F("tags1"), F("tags2")]).model_dump()
Source code in mongo_aggro/expressions/set.py
| class SetUnionExpr(ExpressionBase):
"""
$setUnion expression operator - returns union of arrays (unique values).
Example:
>>> SetUnionExpr(arrays=[F("tags1"), F("tags2")]).model_dump()
{"$setUnion": ["$tags1", "$tags2"]}
"""
arrays: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setUnion expression."""
return {"$setUnion": [serialize_value(a) for a in self.arrays]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $setUnion expression.
Source code in mongo_aggro/expressions/set.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setUnion expression."""
return {"$setUnion": [serialize_value(a) for a in self.arrays]}
|
SetIntersectionExpr
Bases: ExpressionBase
$setIntersection expression operator - returns common elements.
Example
SetIntersectionExpr(arrays=[F("a"), F("b")]).model_dump()
Source code in mongo_aggro/expressions/set.py
| class SetIntersectionExpr(ExpressionBase):
"""
$setIntersection expression operator - returns common elements.
Example:
>>> SetIntersectionExpr(arrays=[F("a"), F("b")]).model_dump()
{"$setIntersection": ["$a", "$b"]}
"""
arrays: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setIntersection expression."""
return {"$setIntersection": [serialize_value(a) for a in self.arrays]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $setIntersection expression.
Source code in mongo_aggro/expressions/set.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setIntersection expression."""
return {"$setIntersection": [serialize_value(a) for a in self.arrays]}
|
SetDifferenceExpr
Bases: ExpressionBase
$setDifference expression operator - returns elements in first not in second.
Example
SetDifferenceExpr(first=F("all"), second=F("excluded")).model_dump()
Source code in mongo_aggro/expressions/set.py
| class SetDifferenceExpr(ExpressionBase):
"""
$setDifference expression operator - returns elements in first not in second.
Example:
>>> SetDifferenceExpr(first=F("all"), second=F("excluded")).model_dump()
{"$setDifference": ["$all", "$excluded"]}
"""
first: Any
second: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setDifference expression."""
return {
"$setDifference": [
serialize_value(self.first),
serialize_value(self.second),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $setDifference expression.
Source code in mongo_aggro/expressions/set.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setDifference expression."""
return {
"$setDifference": [
serialize_value(self.first),
serialize_value(self.second),
]
}
|
SetEqualsExpr
Bases: ExpressionBase
$setEquals expression operator - checks if arrays have same elements.
Example
SetEqualsExpr(arrays=[F("a"), F("b")]).model_dump()
Source code in mongo_aggro/expressions/set.py
| class SetEqualsExpr(ExpressionBase):
"""
$setEquals expression operator - checks if arrays have same elements.
Example:
>>> SetEqualsExpr(arrays=[F("a"), F("b")]).model_dump()
{"$setEquals": ["$a", "$b"]}
"""
arrays: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setEquals expression."""
return {"$setEquals": [serialize_value(a) for a in self.arrays]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $setEquals expression.
Source code in mongo_aggro/expressions/set.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setEquals expression."""
return {"$setEquals": [serialize_value(a) for a in self.arrays]}
|
SetIsSubsetExpr
Bases: ExpressionBase
$setIsSubset expression operator - checks if first is subset of second.
Example
SetIsSubsetExpr(first=F("small"), second=F("large")).model_dump()
Source code in mongo_aggro/expressions/set.py
| class SetIsSubsetExpr(ExpressionBase):
"""
$setIsSubset expression operator - checks if first is subset of second.
Example:
>>> SetIsSubsetExpr(first=F("small"), second=F("large")).model_dump()
{"$setIsSubset": ["$small", "$large"]}
"""
first: Any
second: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setIsSubset expression."""
return {
"$setIsSubset": [
serialize_value(self.first),
serialize_value(self.second),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $setIsSubset expression.
Source code in mongo_aggro/expressions/set.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setIsSubset expression."""
return {
"$setIsSubset": [
serialize_value(self.first),
serialize_value(self.second),
]
}
|
AnyElementTrueExpr
Bases: ExpressionBase
$anyElementTrue expression operator - true if any array element is truthy.
Example
AnyElementTrueExpr(input=F("flags")).model_dump()
Source code in mongo_aggro/expressions/set.py
| class AnyElementTrueExpr(ExpressionBase):
"""
$anyElementTrue expression operator - true if any array element is truthy.
Example:
>>> AnyElementTrueExpr(input=F("flags")).model_dump()
{"$anyElementTrue": "$flags"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $anyElementTrue expression."""
return {"$anyElementTrue": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $anyElementTrue expression.
Source code in mongo_aggro/expressions/set.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $anyElementTrue expression."""
return {"$anyElementTrue": serialize_value(self.input)}
|
AllElementsTrueExpr
Bases: ExpressionBase
$allElementsTrue expression operator - true if all array elements truthy.
Example
AllElementsTrueExpr(input=F("conditions")).model_dump()
Source code in mongo_aggro/expressions/set.py
| class AllElementsTrueExpr(ExpressionBase):
"""
$allElementsTrue expression operator - true if all array elements truthy.
Example:
>>> AllElementsTrueExpr(input=F("conditions")).model_dump()
{"$allElementsTrue": "$conditions"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $allElementsTrue expression."""
return {"$allElementsTrue": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $allElementsTrue expression.
Source code in mongo_aggro/expressions/set.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $allElementsTrue expression."""
return {"$allElementsTrue": serialize_value(self.input)}
|
Object Expressions
MergeObjectsExpr
Bases: ExpressionBase
$mergeObjects expression operator - merges documents into one.
Example
MergeObjectsExpr(objects=[F("defaults"), F("overrides")]).model_dump()
Source code in mongo_aggro/expressions/object.py
| class MergeObjectsExpr(ExpressionBase):
"""
$mergeObjects expression operator - merges documents into one.
Example:
>>> MergeObjectsExpr(objects=[F("defaults"), F("overrides")]).model_dump()
{"$mergeObjects": ["$defaults", "$overrides"]}
"""
objects: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $mergeObjects expression."""
return {"$mergeObjects": [serialize_value(o) for o in self.objects]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $mergeObjects expression.
Source code in mongo_aggro/expressions/object.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $mergeObjects expression."""
return {"$mergeObjects": [serialize_value(o) for o in self.objects]}
|
ObjectToArrayExpr
Bases: ExpressionBase
$objectToArray expression operator - converts object to array of k/v pairs.
Example
ObjectToArrayExpr(input=F("doc")).model_dump()
Source code in mongo_aggro/expressions/object.py
| class ObjectToArrayExpr(ExpressionBase):
"""
$objectToArray expression operator - converts object to array of k/v pairs.
Example:
>>> ObjectToArrayExpr(input=F("doc")).model_dump()
{"$objectToArray": "$doc"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $objectToArray expression."""
return {"$objectToArray": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $objectToArray expression.
Source code in mongo_aggro/expressions/object.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $objectToArray expression."""
return {"$objectToArray": serialize_value(self.input)}
|
ArrayToObjectExpr
Bases: ExpressionBase
$arrayToObject expression operator - converts array of k/v pairs to object.
Example
ArrayToObjectExpr(input=F("pairs")).model_dump()
Source code in mongo_aggro/expressions/object.py
| class ArrayToObjectExpr(ExpressionBase):
"""
$arrayToObject expression operator - converts array of k/v pairs to object.
Example:
>>> ArrayToObjectExpr(input=F("pairs")).model_dump()
{"$arrayToObject": "$pairs"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $arrayToObject expression."""
return {"$arrayToObject": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $arrayToObject expression.
Source code in mongo_aggro/expressions/object.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $arrayToObject expression."""
return {"$arrayToObject": serialize_value(self.input)}
|
GetFieldExpr
Bases: ExpressionBase
$getField expression operator - gets a field value by name.
Example
GetFieldExpr(field="status", input=F("doc")).model_dump()
{"$getField": {"field": "status", "input": "$doc"}}
Source code in mongo_aggro/expressions/object.py
| class GetFieldExpr(ExpressionBase):
"""
$getField expression operator - gets a field value by name.
Example:
>>> GetFieldExpr(field="status", input=F("doc")).model_dump()
{"$getField": {"field": "status", "input": "$doc"}}
"""
field: Any
input: Any | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $getField expression."""
if self.input is None:
return {"$getField": serialize_value(self.field)}
return {
"$getField": {
"field": serialize_value(self.field),
"input": serialize_value(self.input),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $getField expression.
Source code in mongo_aggro/expressions/object.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $getField expression."""
if self.input is None:
return {"$getField": serialize_value(self.field)}
return {
"$getField": {
"field": serialize_value(self.field),
"input": serialize_value(self.input),
}
}
|
SetFieldExpr
Bases: ExpressionBase
$setField expression operator - sets or adds a field in a document.
Example
SetFieldExpr(
... field="status",
... input=F("doc"),
... value="active"
... ).model_dump()
{"$setField": {"field": "status", "input": "$doc", "value": "active"}}
Source code in mongo_aggro/expressions/object.py
| class SetFieldExpr(ExpressionBase):
"""
$setField expression operator - sets or adds a field in a document.
Example:
>>> SetFieldExpr(
... field="status",
... input=F("doc"),
... value="active"
... ).model_dump()
{"$setField": {"field": "status", "input": "$doc", "value": "active"}}
"""
field: Any
input: Any
value: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setField expression."""
return {
"$setField": {
"field": serialize_value(self.field),
"input": serialize_value(self.input),
"value": serialize_value(self.value),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $setField expression.
Source code in mongo_aggro/expressions/object.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $setField expression."""
return {
"$setField": {
"field": serialize_value(self.field),
"input": serialize_value(self.input),
"value": serialize_value(self.value),
}
}
|
Variable Expressions
LetExpr
Bases: ExpressionBase
$let expression operator - defines variables for use in expression.
Example
LetExpr(
... vars={"total": MultiplyExpr(operands=[F("price"), F("qty")])},
... in_=GtExpr(left=Field("$$total"), right=100)
... ).model_dump()
{"$let": {"vars": {"total": {...}}, "in": {...}}}
Source code in mongo_aggro/expressions/variable.py
| class LetExpr(ExpressionBase):
"""
$let expression operator - defines variables for use in expression.
Example:
>>> LetExpr(
... vars={"total": MultiplyExpr(operands=[F("price"), F("qty")])},
... in_=GtExpr(left=Field("$$total"), right=100)
... ).model_dump()
{"$let": {"vars": {"total": {...}}, "in": {...}}}
"""
vars: dict[str, Any]
in_: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $let expression."""
return {
"$let": {
"vars": {k: serialize_value(v) for k, v in self.vars.items()},
"in": serialize_value(self.in_),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $let expression.
Source code in mongo_aggro/expressions/variable.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $let expression."""
return {
"$let": {
"vars": {k: serialize_value(v) for k, v in self.vars.items()},
"in": serialize_value(self.in_),
}
}
|
Miscellaneous Expressions
LiteralExpr
Bases: ExpressionBase
$literal expression operator - returns value without parsing.
Example
LiteralExpr(value="$field").model_dump()
Source code in mongo_aggro/expressions/variable.py
| class LiteralExpr(ExpressionBase):
"""
$literal expression operator - returns value without parsing.
Example:
>>> LiteralExpr(value="$field").model_dump()
{"$literal": "$field"}
"""
value: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $literal expression."""
return {"$literal": self.value}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $literal expression.
Source code in mongo_aggro/expressions/variable.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $literal expression."""
return {"$literal": self.value}
|
RandExpr
Bases: ExpressionBase
$rand expression operator - returns random float between 0 and 1.
Example
RandExpr().model_dump()
{"$rand": {}}
Source code in mongo_aggro/expressions/variable.py
| class RandExpr(ExpressionBase):
"""
$rand expression operator - returns random float between 0 and 1.
Example:
>>> RandExpr().model_dump()
{"$rand": {}}
"""
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $rand expression."""
return {"$rand": {}}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $rand expression.
Source code in mongo_aggro/expressions/variable.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $rand expression."""
return {"$rand": {}}
|
Additional Array Expressions
ArrayElemAtExpr
Bases: ExpressionBase
$arrayElemAt expression operator - gets element at array index.
Example
ArrayElemAtExpr(array=F("items"), index=0).model_dump()
Source code in mongo_aggro/expressions/array.py
| class ArrayElemAtExpr(ExpressionBase):
"""
$arrayElemAt expression operator - gets element at array index.
Example:
>>> ArrayElemAtExpr(array=F("items"), index=0).model_dump()
{"$arrayElemAt": ["$items", 0]}
"""
array: Any
index: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $arrayElemAt expression."""
return {
"$arrayElemAt": [
serialize_value(self.array),
serialize_value(self.index),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $arrayElemAt expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $arrayElemAt expression."""
return {
"$arrayElemAt": [
serialize_value(self.array),
serialize_value(self.index),
]
}
|
ConcatArraysExpr
Bases: ExpressionBase
$concatArrays expression operator - concatenates arrays.
Example
ConcatArraysExpr(arrays=[F("arr1"), F("arr2")]).model_dump()
Source code in mongo_aggro/expressions/array.py
| class ConcatArraysExpr(ExpressionBase):
"""
$concatArrays expression operator - concatenates arrays.
Example:
>>> ConcatArraysExpr(arrays=[F("arr1"), F("arr2")]).model_dump()
{"$concatArrays": ["$arr1", "$arr2"]}
"""
arrays: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $concatArrays expression."""
return {"$concatArrays": [serialize_value(a) for a in self.arrays]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $concatArrays expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $concatArrays expression."""
return {"$concatArrays": [serialize_value(a) for a in self.arrays]}
|
InArrayExpr
Bases: ExpressionBase
$in expression operator - checks if value is in array.
Example
InArrayExpr(value="admin", array=F("roles")).model_dump()
Source code in mongo_aggro/expressions/array.py
| class InArrayExpr(ExpressionBase):
"""
$in expression operator - checks if value is in array.
Example:
>>> InArrayExpr(value="admin", array=F("roles")).model_dump()
{"$in": ["admin", "$roles"]}
"""
value: Any
array: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $in expression."""
return {
"$in": [serialize_value(self.value), serialize_value(self.array)]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $in expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $in expression."""
return {
"$in": [serialize_value(self.value), serialize_value(self.array)]
}
|
IndexOfArrayExpr
Bases: ExpressionBase
$indexOfArray expression operator - finds index of value in array.
Example
IndexOfArrayExpr(array=F("items"), value="target").model_dump()
Source code in mongo_aggro/expressions/array.py
| class IndexOfArrayExpr(ExpressionBase):
"""
$indexOfArray expression operator - finds index of value in array.
Example:
>>> IndexOfArrayExpr(array=F("items"), value="target").model_dump()
{"$indexOfArray": ["$items", "target"]}
"""
array: Any
value: Any
start: int | None = None
end: int | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $indexOfArray expression."""
args: list[Any] = [
serialize_value(self.array),
serialize_value(self.value),
]
if self.start is not None:
args.append(self.start)
if self.end is not None:
args.append(self.end)
return {"$indexOfArray": args}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $indexOfArray expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $indexOfArray expression."""
args: list[Any] = [
serialize_value(self.array),
serialize_value(self.value),
]
if self.start is not None:
args.append(self.start)
if self.end is not None:
args.append(self.end)
return {"$indexOfArray": args}
|
IsArrayExpr
Bases: ExpressionBase
$isArray expression operator - checks if value is an array.
Example
IsArrayExpr(input=F("field")).model_dump()
Source code in mongo_aggro/expressions/array.py
| class IsArrayExpr(ExpressionBase):
"""
$isArray expression operator - checks if value is an array.
Example:
>>> IsArrayExpr(input=F("field")).model_dump()
{"$isArray": "$field"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isArray expression."""
return {"$isArray": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $isArray expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isArray expression."""
return {"$isArray": serialize_value(self.input)}
|
ReverseArrayExpr
Bases: ExpressionBase
$reverseArray expression operator - reverses array elements.
Example
ReverseArrayExpr(input=F("items")).model_dump()
Source code in mongo_aggro/expressions/array.py
| class ReverseArrayExpr(ExpressionBase):
"""
$reverseArray expression operator - reverses array elements.
Example:
>>> ReverseArrayExpr(input=F("items")).model_dump()
{"$reverseArray": "$items"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $reverseArray expression."""
return {"$reverseArray": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $reverseArray expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $reverseArray expression."""
return {"$reverseArray": serialize_value(self.input)}
|
SortArrayExpr
Bases: ExpressionBase
$sortArray expression operator - sorts array elements.
Example
SortArrayExpr(input=F("scores"), sort_by={"score": -1}).model_dump()
{"$sortArray": {"input": "$scores", "sortBy": {"score": -1}}}
Source code in mongo_aggro/expressions/array.py
| class SortArrayExpr(ExpressionBase):
"""
$sortArray expression operator - sorts array elements.
Example:
>>> SortArrayExpr(input=F("scores"), sort_by={"score": -1}).model_dump()
{"$sortArray": {"input": "$scores", "sortBy": {"score": -1}}}
"""
input: Any
sort_by: dict[str, int] | int
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $sortArray expression."""
return {
"$sortArray": {
"input": serialize_value(self.input),
"sortBy": self.sort_by,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $sortArray expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $sortArray expression."""
return {
"$sortArray": {
"input": serialize_value(self.input),
"sortBy": self.sort_by,
}
}
|
RangeExpr
Bases: ExpressionBase
$range expression operator - generates sequence of numbers.
Example
RangeExpr(start=0, end=10, step=2).model_dump()
Source code in mongo_aggro/expressions/array.py
| class RangeExpr(ExpressionBase):
"""
$range expression operator - generates sequence of numbers.
Example:
>>> RangeExpr(start=0, end=10, step=2).model_dump()
{"$range": [0, 10, 2]}
"""
start: Any
end: Any
step: Any = 1
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $range expression."""
return {
"$range": [
serialize_value(self.start),
serialize_value(self.end),
serialize_value(self.step),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $range expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $range expression."""
return {
"$range": [
serialize_value(self.start),
serialize_value(self.end),
serialize_value(self.step),
]
}
|
FirstNExpr
Bases: ExpressionBase
$firstN expression operator - returns first N elements of array.
Example
FirstNExpr(input=F("items"), n=3).model_dump()
{"$firstN": {"input": "$items", "n": 3}}
Source code in mongo_aggro/expressions/array.py
| class FirstNExpr(ExpressionBase):
"""
$firstN expression operator - returns first N elements of array.
Example:
>>> FirstNExpr(input=F("items"), n=3).model_dump()
{"$firstN": {"input": "$items", "n": 3}}
"""
input: Any
n: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $firstN expression."""
return {
"$firstN": {
"input": serialize_value(self.input),
"n": serialize_value(self.n),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $firstN expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $firstN expression."""
return {
"$firstN": {
"input": serialize_value(self.input),
"n": serialize_value(self.n),
}
}
|
LastNExpr
Bases: ExpressionBase
$lastN expression operator - returns last N elements of array.
Example
LastNExpr(input=F("items"), n=3).model_dump()
{"$lastN": {"input": "$items", "n": 3}}
Source code in mongo_aggro/expressions/array.py
| class LastNExpr(ExpressionBase):
"""
$lastN expression operator - returns last N elements of array.
Example:
>>> LastNExpr(input=F("items"), n=3).model_dump()
{"$lastN": {"input": "$items", "n": 3}}
"""
input: Any
n: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $lastN expression."""
return {
"$lastN": {
"input": serialize_value(self.input),
"n": serialize_value(self.n),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $lastN expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $lastN expression."""
return {
"$lastN": {
"input": serialize_value(self.input),
"n": serialize_value(self.n),
}
}
|
MaxNExpr
Bases: ExpressionBase
$maxN expression operator - returns N largest values from array.
Example
MaxNExpr(input=F("scores"), n=3).model_dump()
{"$maxN": {"input": "$scores", "n": 3}}
Source code in mongo_aggro/expressions/array.py
| class MaxNExpr(ExpressionBase):
"""
$maxN expression operator - returns N largest values from array.
Example:
>>> MaxNExpr(input=F("scores"), n=3).model_dump()
{"$maxN": {"input": "$scores", "n": 3}}
"""
input: Any
n: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $maxN expression."""
return {
"$maxN": {
"input": serialize_value(self.input),
"n": serialize_value(self.n),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $maxN expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $maxN expression."""
return {
"$maxN": {
"input": serialize_value(self.input),
"n": serialize_value(self.n),
}
}
|
MinNExpr
Bases: ExpressionBase
$minN expression operator - returns N smallest values from array.
Example
MinNExpr(input=F("scores"), n=3).model_dump()
{"$minN": {"input": "$scores", "n": 3}}
Source code in mongo_aggro/expressions/array.py
| class MinNExpr(ExpressionBase):
"""
$minN expression operator - returns N smallest values from array.
Example:
>>> MinNExpr(input=F("scores"), n=3).model_dump()
{"$minN": {"input": "$scores", "n": 3}}
"""
input: Any
n: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $minN expression."""
return {
"$minN": {
"input": serialize_value(self.input),
"n": serialize_value(self.n),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $minN expression.
Source code in mongo_aggro/expressions/array.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $minN expression."""
return {
"$minN": {
"input": serialize_value(self.input),
"n": serialize_value(self.n),
}
}
|
Additional String Expressions
TrimExpr
Bases: ExpressionBase
$trim expression operator - trims whitespace from both ends.
Example
TrimExpr(input=F("text")).model_dump()
{"$trim": {"input": "$text"}}
Source code in mongo_aggro/expressions/string.py
| class TrimExpr(ExpressionBase):
"""
$trim expression operator - trims whitespace from both ends.
Example:
>>> TrimExpr(input=F("text")).model_dump()
{"$trim": {"input": "$text"}}
"""
input: Any
chars: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $trim expression."""
result: dict[str, Any] = {
"$trim": {"input": serialize_value(self.input)}
}
if self.chars is not None:
result["$trim"]["chars"] = self.chars
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $trim expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $trim expression."""
result: dict[str, Any] = {
"$trim": {"input": serialize_value(self.input)}
}
if self.chars is not None:
result["$trim"]["chars"] = self.chars
return result
|
LTrimExpr
Bases: ExpressionBase
$ltrim expression operator - trims whitespace from left.
Example
LTrimExpr(input=F("text")).model_dump()
{"$ltrim": {"input": "$text"}}
Source code in mongo_aggro/expressions/string.py
| class LTrimExpr(ExpressionBase):
"""
$ltrim expression operator - trims whitespace from left.
Example:
>>> LTrimExpr(input=F("text")).model_dump()
{"$ltrim": {"input": "$text"}}
"""
input: Any
chars: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ltrim expression."""
result: dict[str, Any] = {
"$ltrim": {"input": serialize_value(self.input)}
}
if self.chars is not None:
result["$ltrim"]["chars"] = self.chars
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $ltrim expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ltrim expression."""
result: dict[str, Any] = {
"$ltrim": {"input": serialize_value(self.input)}
}
if self.chars is not None:
result["$ltrim"]["chars"] = self.chars
return result
|
RTrimExpr
Bases: ExpressionBase
$rtrim expression operator - trims whitespace from right.
Example
RTrimExpr(input=F("text")).model_dump()
{"$rtrim": {"input": "$text"}}
Source code in mongo_aggro/expressions/string.py
| class RTrimExpr(ExpressionBase):
"""
$rtrim expression operator - trims whitespace from right.
Example:
>>> RTrimExpr(input=F("text")).model_dump()
{"$rtrim": {"input": "$text"}}
"""
input: Any
chars: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $rtrim expression."""
result: dict[str, Any] = {
"$rtrim": {"input": serialize_value(self.input)}
}
if self.chars is not None:
result["$rtrim"]["chars"] = self.chars
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $rtrim expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $rtrim expression."""
result: dict[str, Any] = {
"$rtrim": {"input": serialize_value(self.input)}
}
if self.chars is not None:
result["$rtrim"]["chars"] = self.chars
return result
|
ReplaceOneExpr
Bases: ExpressionBase
$replaceOne expression operator - replaces first occurrence.
Example
ReplaceOneExpr(
... input=F("text"),
... find="old",
... replacement="new"
... ).model_dump()
{"$replaceOne": {"input": "$text", "find": "old", "replacement": "new"}}
Source code in mongo_aggro/expressions/string.py
| class ReplaceOneExpr(ExpressionBase):
"""
$replaceOne expression operator - replaces first occurrence.
Example:
>>> ReplaceOneExpr(
... input=F("text"),
... find="old",
... replacement="new"
... ).model_dump()
{"$replaceOne": {"input": "$text", "find": "old", "replacement": "new"}}
"""
input: Any
find: Any
replacement: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $replaceOne expression."""
return {
"$replaceOne": {
"input": serialize_value(self.input),
"find": serialize_value(self.find),
"replacement": serialize_value(self.replacement),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $replaceOne expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $replaceOne expression."""
return {
"$replaceOne": {
"input": serialize_value(self.input),
"find": serialize_value(self.find),
"replacement": serialize_value(self.replacement),
}
}
|
ReplaceAllExpr
Bases: ExpressionBase
$replaceAll expression operator - replaces all occurrences.
Example
ReplaceAllExpr(
... input=F("text"),
... find="old",
... replacement="new"
... ).model_dump()
{"$replaceAll": {"input": "$text", "find": "old", "replacement": "new"}}
Source code in mongo_aggro/expressions/string.py
| class ReplaceAllExpr(ExpressionBase):
"""
$replaceAll expression operator - replaces all occurrences.
Example:
>>> ReplaceAllExpr(
... input=F("text"),
... find="old",
... replacement="new"
... ).model_dump()
{"$replaceAll": {"input": "$text", "find": "old", "replacement": "new"}}
"""
input: Any
find: Any
replacement: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $replaceAll expression."""
return {
"$replaceAll": {
"input": serialize_value(self.input),
"find": serialize_value(self.find),
"replacement": serialize_value(self.replacement),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $replaceAll expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $replaceAll expression."""
return {
"$replaceAll": {
"input": serialize_value(self.input),
"find": serialize_value(self.find),
"replacement": serialize_value(self.replacement),
}
}
|
RegexMatchExpr
Bases: ExpressionBase
$regexMatch expression operator - tests if string matches regex.
Example
RegexMatchExpr(input=F("email"), regex=r"@..com$").model_dump()
{"$regexMatch": {"input": "$email", "regex": "@.\.com$"}}
Source code in mongo_aggro/expressions/string.py
| class RegexMatchExpr(ExpressionBase):
"""
$regexMatch expression operator - tests if string matches regex.
Example:
>>> RegexMatchExpr(input=F("email"), regex=r"@.*\\.com$").model_dump()
{"$regexMatch": {"input": "$email", "regex": "@.*\\\\.com$"}}
"""
input: Any
regex: str
options: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $regexMatch expression."""
result: dict[str, Any] = {
"$regexMatch": {
"input": serialize_value(self.input),
"regex": self.regex,
}
}
if self.options is not None:
result["$regexMatch"]["options"] = self.options
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $regexMatch expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $regexMatch expression."""
result: dict[str, Any] = {
"$regexMatch": {
"input": serialize_value(self.input),
"regex": self.regex,
}
}
if self.options is not None:
result["$regexMatch"]["options"] = self.options
return result
|
RegexFindExpr
Bases: ExpressionBase
$regexFind expression operator - finds first regex match.
Example
RegexFindExpr(input=F("text"), regex=r"\d+").model_dump()
{"$regexFind": {"input": "$text", "regex": "\d+"}}
Source code in mongo_aggro/expressions/string.py
| class RegexFindExpr(ExpressionBase):
"""
$regexFind expression operator - finds first regex match.
Example:
>>> RegexFindExpr(input=F("text"), regex=r"\\d+").model_dump()
{"$regexFind": {"input": "$text", "regex": "\\\\d+"}}
"""
input: Any
regex: str
options: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $regexFind expression."""
result: dict[str, Any] = {
"$regexFind": {
"input": serialize_value(self.input),
"regex": self.regex,
}
}
if self.options is not None:
result["$regexFind"]["options"] = self.options
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $regexFind expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $regexFind expression."""
result: dict[str, Any] = {
"$regexFind": {
"input": serialize_value(self.input),
"regex": self.regex,
}
}
if self.options is not None:
result["$regexFind"]["options"] = self.options
return result
|
RegexFindAllExpr
Bases: ExpressionBase
$regexFindAll expression operator - finds all regex matches.
Example
RegexFindAllExpr(input=F("text"), regex=r"\w+").model_dump()
{"$regexFindAll": {"input": "$text", "regex": "\w+"}}
Source code in mongo_aggro/expressions/string.py
| class RegexFindAllExpr(ExpressionBase):
"""
$regexFindAll expression operator - finds all regex matches.
Example:
>>> RegexFindAllExpr(input=F("text"), regex=r"\\w+").model_dump()
{"$regexFindAll": {"input": "$text", "regex": "\\\\w+"}}
"""
input: Any
regex: str
options: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $regexFindAll expression."""
result: dict[str, Any] = {
"$regexFindAll": {
"input": serialize_value(self.input),
"regex": self.regex,
}
}
if self.options is not None:
result["$regexFindAll"]["options"] = self.options
return result
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $regexFindAll expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $regexFindAll expression."""
result: dict[str, Any] = {
"$regexFindAll": {
"input": serialize_value(self.input),
"regex": self.regex,
}
}
if self.options is not None:
result["$regexFindAll"]["options"] = self.options
return result
|
SubstrCPExpr
Bases: ExpressionBase
$substrCP expression operator - substring by code points.
Example
SubstrCPExpr(input=F("text"), start=0, length=5).model_dump()
Source code in mongo_aggro/expressions/string.py
| class SubstrCPExpr(ExpressionBase):
"""
$substrCP expression operator - substring by code points.
Example:
>>> SubstrCPExpr(input=F("text"), start=0, length=5).model_dump()
{"$substrCP": ["$text", 0, 5]}
"""
input: Any
start: int
length: int
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $substrCP expression."""
return {
"$substrCP": [serialize_value(self.input), self.start, self.length]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $substrCP expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $substrCP expression."""
return {
"$substrCP": [serialize_value(self.input), self.start, self.length]
}
|
StrLenCPExpr
Bases: ExpressionBase
$strLenCP expression operator - string length in code points.
Example
StrLenCPExpr(input=F("text")).model_dump()
Source code in mongo_aggro/expressions/string.py
| class StrLenCPExpr(ExpressionBase):
"""
$strLenCP expression operator - string length in code points.
Example:
>>> StrLenCPExpr(input=F("text")).model_dump()
{"$strLenCP": "$text"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $strLenCP expression."""
return {"$strLenCP": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $strLenCP expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $strLenCP expression."""
return {"$strLenCP": serialize_value(self.input)}
|
StrCaseCmpExpr
Bases: ExpressionBase
$strcasecmp expression operator - case-insensitive string comparison.
Example
StrCaseCmpExpr(first=F("a"), second=F("b")).model_dump()
Source code in mongo_aggro/expressions/string.py
| class StrCaseCmpExpr(ExpressionBase):
"""
$strcasecmp expression operator - case-insensitive string comparison.
Example:
>>> StrCaseCmpExpr(first=F("a"), second=F("b")).model_dump()
{"$strcasecmp": ["$a", "$b"]}
"""
first: Any
second: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $strcasecmp expression."""
return {
"$strcasecmp": [
serialize_value(self.first),
serialize_value(self.second),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $strcasecmp expression.
Source code in mongo_aggro/expressions/string.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $strcasecmp expression."""
return {
"$strcasecmp": [
serialize_value(self.first),
serialize_value(self.second),
]
}
|
Additional Arithmetic Expressions
CeilExpr
Bases: ExpressionBase
$ceil expression operator - rounds up to nearest integer.
Example
CeilExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class CeilExpr(ExpressionBase):
"""
$ceil expression operator - rounds up to nearest integer.
Example:
>>> CeilExpr(input=F("value")).model_dump()
{"$ceil": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ceil expression."""
return {"$ceil": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $ceil expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ceil expression."""
return {"$ceil": serialize_value(self.input)}
|
FloorExpr
Bases: ExpressionBase
$floor expression operator - rounds down to nearest integer.
Example
FloorExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class FloorExpr(ExpressionBase):
"""
$floor expression operator - rounds down to nearest integer.
Example:
>>> FloorExpr(input=F("value")).model_dump()
{"$floor": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $floor expression."""
return {"$floor": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $floor expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $floor expression."""
return {"$floor": serialize_value(self.input)}
|
RoundExpr
Bases: ExpressionBase
$round expression operator - rounds to specified decimal place.
Example
RoundExpr(input=F("value"), place=2).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class RoundExpr(ExpressionBase):
"""
$round expression operator - rounds to specified decimal place.
Example:
>>> RoundExpr(input=F("value"), place=2).model_dump()
{"$round": ["$value", 2]}
"""
input: Any
place: int = 0
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $round expression."""
return {"$round": [serialize_value(self.input), self.place]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $round expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $round expression."""
return {"$round": [serialize_value(self.input), self.place]}
|
TruncExpr
Bases: ExpressionBase
$trunc expression operator - truncates to specified decimal place.
Example
TruncExpr(input=F("value"), place=2).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class TruncExpr(ExpressionBase):
"""
$trunc expression operator - truncates to specified decimal place.
Example:
>>> TruncExpr(input=F("value"), place=2).model_dump()
{"$trunc": ["$value", 2]}
"""
input: Any
place: int = 0
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $trunc expression."""
return {"$trunc": [serialize_value(self.input), self.place]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $trunc expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $trunc expression."""
return {"$trunc": [serialize_value(self.input), self.place]}
|
SqrtExpr
Bases: ExpressionBase
$sqrt expression operator - calculates square root.
Example
SqrtExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class SqrtExpr(ExpressionBase):
"""
$sqrt expression operator - calculates square root.
Example:
>>> SqrtExpr(input=F("value")).model_dump()
{"$sqrt": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $sqrt expression."""
return {"$sqrt": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $sqrt expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $sqrt expression."""
return {"$sqrt": serialize_value(self.input)}
|
PowExpr
Bases: ExpressionBase
$pow expression operator - raises number to exponent.
Example
PowExpr(base=F("value"), exponent=2).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class PowExpr(ExpressionBase):
"""
$pow expression operator - raises number to exponent.
Example:
>>> PowExpr(base=F("value"), exponent=2).model_dump()
{"$pow": ["$value", 2]}
"""
base: Any
exponent: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $pow expression."""
return {
"$pow": [
serialize_value(self.base),
serialize_value(self.exponent),
]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $pow expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $pow expression."""
return {
"$pow": [
serialize_value(self.base),
serialize_value(self.exponent),
]
}
|
ExpExpr
Bases: ExpressionBase
$exp expression operator - raises e to the specified exponent.
Example
ExpExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class ExpExpr(ExpressionBase):
"""
$exp expression operator - raises e to the specified exponent.
Example:
>>> ExpExpr(input=F("value")).model_dump()
{"$exp": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $exp expression."""
return {"$exp": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $exp expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $exp expression."""
return {"$exp": serialize_value(self.input)}
|
LnExpr
Bases: ExpressionBase
$ln expression operator - calculates natural logarithm.
Example
LnExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class LnExpr(ExpressionBase):
"""
$ln expression operator - calculates natural logarithm.
Example:
>>> LnExpr(input=F("value")).model_dump()
{"$ln": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ln expression."""
return {"$ln": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $ln expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $ln expression."""
return {"$ln": serialize_value(self.input)}
|
Log10Expr
Bases: ExpressionBase
$log10 expression operator - calculates log base 10.
Example
Log10Expr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class Log10Expr(ExpressionBase):
"""
$log10 expression operator - calculates log base 10.
Example:
>>> Log10Expr(input=F("value")).model_dump()
{"$log10": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $log10 expression."""
return {"$log10": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $log10 expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $log10 expression."""
return {"$log10": serialize_value(self.input)}
|
LogExpr
Bases: ExpressionBase
$log expression operator - calculates log with specified base.
Example
LogExpr(input=F("value"), base=2).model_dump()
Source code in mongo_aggro/expressions/arithmetic.py
| class LogExpr(ExpressionBase):
"""
$log expression operator - calculates log with specified base.
Example:
>>> LogExpr(input=F("value"), base=2).model_dump()
{"$log": ["$value", 2]}
"""
input: Any
base: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $log expression."""
return {
"$log": [serialize_value(self.input), serialize_value(self.base)]
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $log expression.
Source code in mongo_aggro/expressions/arithmetic.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $log expression."""
return {
"$log": [serialize_value(self.input), serialize_value(self.base)]
}
|
Trigonometry Expressions
SinExpr
Bases: ExpressionBase
$sin expression operator - calculates sine.
Example
SinExpr(input=F("angle")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class SinExpr(ExpressionBase):
"""
$sin expression operator - calculates sine.
Example:
>>> SinExpr(input=F("angle")).model_dump()
{"$sin": "$angle"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $sin expression."""
return {"$sin": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $sin expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $sin expression."""
return {"$sin": serialize_value(self.input)}
|
CosExpr
Bases: ExpressionBase
$cos expression operator - calculates cosine.
Example
CosExpr(input=F("angle")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class CosExpr(ExpressionBase):
"""
$cos expression operator - calculates cosine.
Example:
>>> CosExpr(input=F("angle")).model_dump()
{"$cos": "$angle"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $cos expression."""
return {"$cos": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $cos expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $cos expression."""
return {"$cos": serialize_value(self.input)}
|
TanExpr
Bases: ExpressionBase
$tan expression operator - calculates tangent.
Example
TanExpr(input=F("angle")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class TanExpr(ExpressionBase):
"""
$tan expression operator - calculates tangent.
Example:
>>> TanExpr(input=F("angle")).model_dump()
{"$tan": "$angle"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $tan expression."""
return {"$tan": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $tan expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $tan expression."""
return {"$tan": serialize_value(self.input)}
|
AsinExpr
Bases: ExpressionBase
$asin expression operator - calculates arc sine.
Example
AsinExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class AsinExpr(ExpressionBase):
"""
$asin expression operator - calculates arc sine.
Example:
>>> AsinExpr(input=F("value")).model_dump()
{"$asin": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $asin expression."""
return {"$asin": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $asin expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $asin expression."""
return {"$asin": serialize_value(self.input)}
|
AcosExpr
Bases: ExpressionBase
$acos expression operator - calculates arc cosine.
Example
AcosExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class AcosExpr(ExpressionBase):
"""
$acos expression operator - calculates arc cosine.
Example:
>>> AcosExpr(input=F("value")).model_dump()
{"$acos": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $acos expression."""
return {"$acos": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $acos expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $acos expression."""
return {"$acos": serialize_value(self.input)}
|
AtanExpr
Bases: ExpressionBase
$atan expression operator - calculates arc tangent.
Example
AtanExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class AtanExpr(ExpressionBase):
"""
$atan expression operator - calculates arc tangent.
Example:
>>> AtanExpr(input=F("value")).model_dump()
{"$atan": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $atan expression."""
return {"$atan": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $atan expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $atan expression."""
return {"$atan": serialize_value(self.input)}
|
Atan2Expr
Bases: ExpressionBase
$atan2 expression operator - calculates arc tangent of y/x.
Example
Atan2Expr(y=F("y"), x=F("x")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class Atan2Expr(ExpressionBase):
"""
$atan2 expression operator - calculates arc tangent of y/x.
Example:
>>> Atan2Expr(y=F("y"), x=F("x")).model_dump()
{"$atan2": ["$y", "$x"]}
"""
y: Any
x: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $atan2 expression."""
return {"$atan2": [serialize_value(self.y), serialize_value(self.x)]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $atan2 expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $atan2 expression."""
return {"$atan2": [serialize_value(self.y), serialize_value(self.x)]}
|
SinhExpr
Bases: ExpressionBase
$sinh expression operator - calculates hyperbolic sine.
Example
SinhExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class SinhExpr(ExpressionBase):
"""
$sinh expression operator - calculates hyperbolic sine.
Example:
>>> SinhExpr(input=F("value")).model_dump()
{"$sinh": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $sinh expression."""
return {"$sinh": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $sinh expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $sinh expression."""
return {"$sinh": serialize_value(self.input)}
|
CoshExpr
Bases: ExpressionBase
$cosh expression operator - calculates hyperbolic cosine.
Example
CoshExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class CoshExpr(ExpressionBase):
"""
$cosh expression operator - calculates hyperbolic cosine.
Example:
>>> CoshExpr(input=F("value")).model_dump()
{"$cosh": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $cosh expression."""
return {"$cosh": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $cosh expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $cosh expression."""
return {"$cosh": serialize_value(self.input)}
|
TanhExpr
Bases: ExpressionBase
$tanh expression operator - calculates hyperbolic tangent.
Example
TanhExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class TanhExpr(ExpressionBase):
"""
$tanh expression operator - calculates hyperbolic tangent.
Example:
>>> TanhExpr(input=F("value")).model_dump()
{"$tanh": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $tanh expression."""
return {"$tanh": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $tanh expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $tanh expression."""
return {"$tanh": serialize_value(self.input)}
|
AsinhExpr
Bases: ExpressionBase
$asinh expression operator - calculates hyperbolic arc sine.
Example
AsinhExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class AsinhExpr(ExpressionBase):
"""
$asinh expression operator - calculates hyperbolic arc sine.
Example:
>>> AsinhExpr(input=F("value")).model_dump()
{"$asinh": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $asinh expression."""
return {"$asinh": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $asinh expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $asinh expression."""
return {"$asinh": serialize_value(self.input)}
|
AcoshExpr
Bases: ExpressionBase
$acosh expression operator - calculates hyperbolic arc cosine.
Example
AcoshExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class AcoshExpr(ExpressionBase):
"""
$acosh expression operator - calculates hyperbolic arc cosine.
Example:
>>> AcoshExpr(input=F("value")).model_dump()
{"$acosh": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $acosh expression."""
return {"$acosh": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $acosh expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $acosh expression."""
return {"$acosh": serialize_value(self.input)}
|
AtanhExpr
Bases: ExpressionBase
$atanh expression operator - calculates hyperbolic arc tangent.
Example
AtanhExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class AtanhExpr(ExpressionBase):
"""
$atanh expression operator - calculates hyperbolic arc tangent.
Example:
>>> AtanhExpr(input=F("value")).model_dump()
{"$atanh": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $atanh expression."""
return {"$atanh": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $atanh expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $atanh expression."""
return {"$atanh": serialize_value(self.input)}
|
DegreesToRadiansExpr
Bases: ExpressionBase
$degreesToRadians expression operator - converts degrees to radians.
Example
DegreesToRadiansExpr(input=F("degrees")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class DegreesToRadiansExpr(ExpressionBase):
"""
$degreesToRadians expression operator - converts degrees to radians.
Example:
>>> DegreesToRadiansExpr(input=F("degrees")).model_dump()
{"$degreesToRadians": "$degrees"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $degreesToRadians expression."""
return {"$degreesToRadians": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $degreesToRadians expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $degreesToRadians expression."""
return {"$degreesToRadians": serialize_value(self.input)}
|
RadiansToDegreesExpr
Bases: ExpressionBase
$radiansToDegrees expression operator - converts radians to degrees.
Example
RadiansToDegreesExpr(input=F("radians")).model_dump()
Source code in mongo_aggro/expressions/trigonometry.py
| class RadiansToDegreesExpr(ExpressionBase):
"""
$radiansToDegrees expression operator - converts radians to degrees.
Example:
>>> RadiansToDegreesExpr(input=F("radians")).model_dump()
{"$radiansToDegrees": "$radians"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $radiansToDegrees expression."""
return {"$radiansToDegrees": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $radiansToDegrees expression.
Source code in mongo_aggro/expressions/trigonometry.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $radiansToDegrees expression."""
return {"$radiansToDegrees": serialize_value(self.input)}
|
Bitwise Expressions
BitAndExpr
Bases: ExpressionBase
$bitAnd expression operator - bitwise AND.
Example
BitAndExpr(operands=[F("a"), F("b")]).model_dump()
Source code in mongo_aggro/expressions/bitwise.py
| class BitAndExpr(ExpressionBase):
"""
$bitAnd expression operator - bitwise AND.
Example:
>>> BitAndExpr(operands=[F("a"), F("b")]).model_dump()
{"$bitAnd": ["$a", "$b"]}
"""
operands: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bitAnd expression."""
return {"$bitAnd": [serialize_value(o) for o in self.operands]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $bitAnd expression.
Source code in mongo_aggro/expressions/bitwise.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bitAnd expression."""
return {"$bitAnd": [serialize_value(o) for o in self.operands]}
|
BitOrExpr
Bases: ExpressionBase
$bitOr expression operator - bitwise OR.
Example
BitOrExpr(operands=[F("a"), F("b")]).model_dump()
Source code in mongo_aggro/expressions/bitwise.py
| class BitOrExpr(ExpressionBase):
"""
$bitOr expression operator - bitwise OR.
Example:
>>> BitOrExpr(operands=[F("a"), F("b")]).model_dump()
{"$bitOr": ["$a", "$b"]}
"""
operands: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bitOr expression."""
return {"$bitOr": [serialize_value(o) for o in self.operands]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $bitOr expression.
Source code in mongo_aggro/expressions/bitwise.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bitOr expression."""
return {"$bitOr": [serialize_value(o) for o in self.operands]}
|
BitXorExpr
Bases: ExpressionBase
$bitXor expression operator - bitwise XOR.
Example
BitXorExpr(operands=[F("a"), F("b")]).model_dump()
Source code in mongo_aggro/expressions/bitwise.py
| class BitXorExpr(ExpressionBase):
"""
$bitXor expression operator - bitwise XOR.
Example:
>>> BitXorExpr(operands=[F("a"), F("b")]).model_dump()
{"$bitXor": ["$a", "$b"]}
"""
operands: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bitXor expression."""
return {"$bitXor": [serialize_value(o) for o in self.operands]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $bitXor expression.
Source code in mongo_aggro/expressions/bitwise.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bitXor expression."""
return {"$bitXor": [serialize_value(o) for o in self.operands]}
|
BitNotExpr
Bases: ExpressionBase
$bitNot expression operator - bitwise NOT.
Example
BitNotExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/bitwise.py
| class BitNotExpr(ExpressionBase):
"""
$bitNot expression operator - bitwise NOT.
Example:
>>> BitNotExpr(input=F("value")).model_dump()
{"$bitNot": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bitNot expression."""
return {"$bitNot": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $bitNot expression.
Source code in mongo_aggro/expressions/bitwise.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bitNot expression."""
return {"$bitNot": serialize_value(self.input)}
|
Data Size Expressions
BsonSizeExpr
Bases: ExpressionBase
$bsonSize expression operator - returns size of document in bytes.
Example
BsonSizeExpr(input=F("doc")).model_dump()
Source code in mongo_aggro/expressions/size.py
| class BsonSizeExpr(ExpressionBase):
"""
$bsonSize expression operator - returns size of document in bytes.
Example:
>>> BsonSizeExpr(input=F("doc")).model_dump()
{"$bsonSize": "$doc"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bsonSize expression."""
return {"$bsonSize": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $bsonSize expression.
Source code in mongo_aggro/expressions/size.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bsonSize expression."""
return {"$bsonSize": serialize_value(self.input)}
|
BinarySizeExpr
Bases: ExpressionBase
$binarySize expression operator - returns size of string/binary in bytes.
Example
BinarySizeExpr(input=F("data")).model_dump()
Source code in mongo_aggro/expressions/size.py
| class BinarySizeExpr(ExpressionBase):
"""
$binarySize expression operator - returns size of string/binary in bytes.
Example:
>>> BinarySizeExpr(input=F("data")).model_dump()
{"$binarySize": "$data"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $binarySize expression."""
return {"$binarySize": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $binarySize expression.
Source code in mongo_aggro/expressions/size.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $binarySize expression."""
return {"$binarySize": serialize_value(self.input)}
|
Date Part Expressions
YearExpr
Bases: ExpressionBase
$year expression operator - extracts year from date.
Example
YearExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class YearExpr(ExpressionBase):
"""
$year expression operator - extracts year from date.
Example:
>>> YearExpr(date=F("createdAt")).model_dump()
{"$year": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $year expression."""
if self.timezone is None:
return {"$year": serialize_value(self.date)}
return {
"$year": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $year expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $year expression."""
if self.timezone is None:
return {"$year": serialize_value(self.date)}
return {
"$year": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
MonthExpr
Bases: ExpressionBase
$month expression operator - extracts month (1-12) from date.
Example
MonthExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class MonthExpr(ExpressionBase):
"""
$month expression operator - extracts month (1-12) from date.
Example:
>>> MonthExpr(date=F("createdAt")).model_dump()
{"$month": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $month expression."""
if self.timezone is None:
return {"$month": serialize_value(self.date)}
return {
"$month": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $month expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $month expression."""
if self.timezone is None:
return {"$month": serialize_value(self.date)}
return {
"$month": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
DayOfMonthExpr
Bases: ExpressionBase
$dayOfMonth expression operator - extracts day of month (1-31).
Example
DayOfMonthExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class DayOfMonthExpr(ExpressionBase):
"""
$dayOfMonth expression operator - extracts day of month (1-31).
Example:
>>> DayOfMonthExpr(date=F("createdAt")).model_dump()
{"$dayOfMonth": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dayOfMonth expression."""
if self.timezone is None:
return {"$dayOfMonth": serialize_value(self.date)}
return {
"$dayOfMonth": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dayOfMonth expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dayOfMonth expression."""
if self.timezone is None:
return {"$dayOfMonth": serialize_value(self.date)}
return {
"$dayOfMonth": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
DayOfWeekExpr
Bases: ExpressionBase
$dayOfWeek expression operator - extracts day of week (1=Sun, 7=Sat).
Example
DayOfWeekExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class DayOfWeekExpr(ExpressionBase):
"""
$dayOfWeek expression operator - extracts day of week (1=Sun, 7=Sat).
Example:
>>> DayOfWeekExpr(date=F("createdAt")).model_dump()
{"$dayOfWeek": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dayOfWeek expression."""
if self.timezone is None:
return {"$dayOfWeek": serialize_value(self.date)}
return {
"$dayOfWeek": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dayOfWeek expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dayOfWeek expression."""
if self.timezone is None:
return {"$dayOfWeek": serialize_value(self.date)}
return {
"$dayOfWeek": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
DayOfYearExpr
Bases: ExpressionBase
$dayOfYear expression operator - extracts day of year (1-366).
Example
DayOfYearExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class DayOfYearExpr(ExpressionBase):
"""
$dayOfYear expression operator - extracts day of year (1-366).
Example:
>>> DayOfYearExpr(date=F("createdAt")).model_dump()
{"$dayOfYear": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dayOfYear expression."""
if self.timezone is None:
return {"$dayOfYear": serialize_value(self.date)}
return {
"$dayOfYear": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dayOfYear expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dayOfYear expression."""
if self.timezone is None:
return {"$dayOfYear": serialize_value(self.date)}
return {
"$dayOfYear": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
HourExpr
Bases: ExpressionBase
$hour expression operator - extracts hour (0-23) from date.
Example
HourExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class HourExpr(ExpressionBase):
"""
$hour expression operator - extracts hour (0-23) from date.
Example:
>>> HourExpr(date=F("createdAt")).model_dump()
{"$hour": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $hour expression."""
if self.timezone is None:
return {"$hour": serialize_value(self.date)}
return {
"$hour": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $hour expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $hour expression."""
if self.timezone is None:
return {"$hour": serialize_value(self.date)}
return {
"$hour": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
MinuteExpr
Bases: ExpressionBase
$minute expression operator - extracts minute (0-59) from date.
Example
MinuteExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class MinuteExpr(ExpressionBase):
"""
$minute expression operator - extracts minute (0-59) from date.
Example:
>>> MinuteExpr(date=F("createdAt")).model_dump()
{"$minute": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $minute expression."""
if self.timezone is None:
return {"$minute": serialize_value(self.date)}
return {
"$minute": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $minute expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $minute expression."""
if self.timezone is None:
return {"$minute": serialize_value(self.date)}
return {
"$minute": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
SecondExpr
Bases: ExpressionBase
$second expression operator - extracts second (0-60) from date.
Example
SecondExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class SecondExpr(ExpressionBase):
"""
$second expression operator - extracts second (0-60) from date.
Example:
>>> SecondExpr(date=F("createdAt")).model_dump()
{"$second": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $second expression."""
if self.timezone is None:
return {"$second": serialize_value(self.date)}
return {
"$second": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $second expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $second expression."""
if self.timezone is None:
return {"$second": serialize_value(self.date)}
return {
"$second": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
MillisecondExpr
Bases: ExpressionBase
$millisecond expression operator - extracts milliseconds (0-999).
Example
MillisecondExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class MillisecondExpr(ExpressionBase):
"""
$millisecond expression operator - extracts milliseconds (0-999).
Example:
>>> MillisecondExpr(date=F("createdAt")).model_dump()
{"$millisecond": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $millisecond expression."""
if self.timezone is None:
return {"$millisecond": serialize_value(self.date)}
return {
"$millisecond": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $millisecond expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $millisecond expression."""
if self.timezone is None:
return {"$millisecond": serialize_value(self.date)}
return {
"$millisecond": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
WeekExpr
Bases: ExpressionBase
$week expression operator - extracts week number (0-53).
Example
WeekExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class WeekExpr(ExpressionBase):
"""
$week expression operator - extracts week number (0-53).
Example:
>>> WeekExpr(date=F("createdAt")).model_dump()
{"$week": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $week expression."""
if self.timezone is None:
return {"$week": serialize_value(self.date)}
return {
"$week": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $week expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $week expression."""
if self.timezone is None:
return {"$week": serialize_value(self.date)}
return {
"$week": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
IsoWeekExpr
Bases: ExpressionBase
$isoWeek expression operator - extracts ISO week number (1-53).
Example
IsoWeekExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class IsoWeekExpr(ExpressionBase):
"""
$isoWeek expression operator - extracts ISO week number (1-53).
Example:
>>> IsoWeekExpr(date=F("createdAt")).model_dump()
{"$isoWeek": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isoWeek expression."""
if self.timezone is None:
return {"$isoWeek": serialize_value(self.date)}
return {
"$isoWeek": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $isoWeek expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isoWeek expression."""
if self.timezone is None:
return {"$isoWeek": serialize_value(self.date)}
return {
"$isoWeek": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
IsoWeekYearExpr
Bases: ExpressionBase
$isoWeekYear expression operator - extracts ISO week year.
Example
IsoWeekYearExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class IsoWeekYearExpr(ExpressionBase):
"""
$isoWeekYear expression operator - extracts ISO week year.
Example:
>>> IsoWeekYearExpr(date=F("createdAt")).model_dump()
{"$isoWeekYear": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isoWeekYear expression."""
if self.timezone is None:
return {"$isoWeekYear": serialize_value(self.date)}
return {
"$isoWeekYear": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $isoWeekYear expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isoWeekYear expression."""
if self.timezone is None:
return {"$isoWeekYear": serialize_value(self.date)}
return {
"$isoWeekYear": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
IsoDayOfWeekExpr
Bases: ExpressionBase
$isoDayOfWeek expression operator - extracts ISO day of week (1=Mon, 7=Sun).
Example
IsoDayOfWeekExpr(date=F("createdAt")).model_dump()
Source code in mongo_aggro/expressions/date.py
| class IsoDayOfWeekExpr(ExpressionBase):
"""
$isoDayOfWeek expression operator - extracts ISO day of week (1=Mon, 7=Sun).
Example:
>>> IsoDayOfWeekExpr(date=F("createdAt")).model_dump()
{"$isoDayOfWeek": "$createdAt"}
"""
date: Any
timezone: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isoDayOfWeek expression."""
if self.timezone is None:
return {"$isoDayOfWeek": serialize_value(self.date)}
return {
"$isoDayOfWeek": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $isoDayOfWeek expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $isoDayOfWeek expression."""
if self.timezone is None:
return {"$isoDayOfWeek": serialize_value(self.date)}
return {
"$isoDayOfWeek": {
"date": serialize_value(self.date),
"timezone": self.timezone,
}
}
|
DateFromPartsExpr
Bases: ExpressionBase
$dateFromParts expression operator - constructs date from parts.
Example
DateFromPartsExpr(year=2024, month=1, day=15).model_dump()
{"$dateFromParts": {"year": 2024, "month": 1, "day": 15}}
Source code in mongo_aggro/expressions/date.py
| class DateFromPartsExpr(ExpressionBase):
"""
$dateFromParts expression operator - constructs date from parts.
Example:
>>> DateFromPartsExpr(year=2024, month=1, day=15).model_dump()
{"$dateFromParts": {"year": 2024, "month": 1, "day": 15}}
"""
year: Any
month: Any | None = None
day: Any | None = None
hour: Any | None = None
minute: Any | None = None
second: Any | None = None
millisecond: Any | None = None
timezone: str | None = None
# ISO week date fields
iso_week_year: Any | None = None
iso_week: Any | None = None
iso_day_of_week: Any | None = None
def _add_date_parts(self, result: dict[str, Any]) -> None:
"""Add date part fields to result dict."""
if self.iso_week_year is not None:
result["isoWeekYear"] = serialize_value(self.iso_week_year)
if self.iso_week is not None:
result["isoWeek"] = serialize_value(self.iso_week)
if self.iso_day_of_week is not None:
result["isoDayOfWeek"] = serialize_value(self.iso_day_of_week)
else:
result["year"] = serialize_value(self.year)
if self.month is not None:
result["month"] = serialize_value(self.month)
if self.day is not None:
result["day"] = serialize_value(self.day)
def _add_time_parts(self, result: dict[str, Any]) -> None:
"""Add time part fields to result dict."""
if self.hour is not None:
result["hour"] = serialize_value(self.hour)
if self.minute is not None:
result["minute"] = serialize_value(self.minute)
if self.second is not None:
result["second"] = serialize_value(self.second)
if self.millisecond is not None:
result["millisecond"] = serialize_value(self.millisecond)
if self.timezone is not None:
result["timezone"] = self.timezone
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateFromParts expression."""
result: dict[str, Any] = {}
self._add_date_parts(result)
self._add_time_parts(result)
return {"$dateFromParts": result}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dateFromParts expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateFromParts expression."""
result: dict[str, Any] = {}
self._add_date_parts(result)
self._add_time_parts(result)
return {"$dateFromParts": result}
|
DateToPartsExpr
Bases: ExpressionBase
$dateToParts expression operator - extracts all date parts.
Example
DateToPartsExpr(date=F("createdAt")).model_dump()
{"$dateToParts": {"date": "$createdAt"}}
Source code in mongo_aggro/expressions/date.py
| class DateToPartsExpr(ExpressionBase):
"""
$dateToParts expression operator - extracts all date parts.
Example:
>>> DateToPartsExpr(date=F("createdAt")).model_dump()
{"$dateToParts": {"date": "$createdAt"}}
"""
date: Any
timezone: str | None = None
iso8601: bool | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateToParts expression."""
result: dict[str, Any] = {"date": serialize_value(self.date)}
if self.timezone is not None:
result["timezone"] = self.timezone
if self.iso8601 is not None:
result["iso8601"] = self.iso8601
return {"$dateToParts": result}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dateToParts expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateToParts expression."""
result: dict[str, Any] = {"date": serialize_value(self.date)}
if self.timezone is not None:
result["timezone"] = self.timezone
if self.iso8601 is not None:
result["iso8601"] = self.iso8601
return {"$dateToParts": result}
|
DateTruncExpr
Bases: ExpressionBase
$dateTrunc expression operator - truncates date to specified unit.
Example
DateTruncExpr(date=F("timestamp"), unit="day").model_dump()
{"$dateTrunc": {"date": "$timestamp", "unit": "day"}}
Source code in mongo_aggro/expressions/date.py
| class DateTruncExpr(ExpressionBase):
"""
$dateTrunc expression operator - truncates date to specified unit.
Example:
>>> DateTruncExpr(date=F("timestamp"), unit="day").model_dump()
{"$dateTrunc": {"date": "$timestamp", "unit": "day"}}
"""
date: Any
unit: str
bin_size: int | None = None
timezone: str | None = None
start_of_week: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateTrunc expression."""
result: dict[str, Any] = {
"date": serialize_value(self.date),
"unit": self.unit,
}
if self.bin_size is not None:
result["binSize"] = self.bin_size
if self.timezone is not None:
result["timezone"] = self.timezone
if self.start_of_week is not None:
result["startOfWeek"] = self.start_of_week
return {"$dateTrunc": result}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $dateTrunc expression.
Source code in mongo_aggro/expressions/date.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $dateTrunc expression."""
result: dict[str, Any] = {
"date": serialize_value(self.date),
"unit": self.unit,
}
if self.bin_size is not None:
result["binSize"] = self.bin_size
if self.timezone is not None:
result["timezone"] = self.timezone
if self.start_of_week is not None:
result["startOfWeek"] = self.start_of_week
return {"$dateTrunc": result}
|
Window Expressions
These operators are used with the $setWindowFields stage.
RankExpr
Bases: ExpressionBase
$rank window operator - returns document rank in partition.
Example
RankExpr().model_dump()
{"$rank": {}}
Source code in mongo_aggro/expressions/window.py
| class RankExpr(ExpressionBase):
"""
$rank window operator - returns document rank in partition.
Example:
>>> RankExpr().model_dump()
{"$rank": {}}
"""
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $rank expression."""
return {"$rank": {}}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $rank expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $rank expression."""
return {"$rank": {}}
|
DenseRankExpr
Bases: ExpressionBase
$denseRank window operator - returns dense rank (no gaps).
Example
DenseRankExpr().model_dump()
{"$denseRank": {}}
Source code in mongo_aggro/expressions/window.py
| class DenseRankExpr(ExpressionBase):
"""
$denseRank window operator - returns dense rank (no gaps).
Example:
>>> DenseRankExpr().model_dump()
{"$denseRank": {}}
"""
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $denseRank expression."""
return {"$denseRank": {}}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $denseRank expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $denseRank expression."""
return {"$denseRank": {}}
|
DocumentNumberExpr
Bases: ExpressionBase
$documentNumber window operator - returns position in partition.
Example
DocumentNumberExpr().model_dump()
{"$documentNumber": {}}
Source code in mongo_aggro/expressions/window.py
| class DocumentNumberExpr(ExpressionBase):
"""
$documentNumber window operator - returns position in partition.
Example:
>>> DocumentNumberExpr().model_dump()
{"$documentNumber": {}}
"""
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $documentNumber expression."""
return {"$documentNumber": {}}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $documentNumber expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $documentNumber expression."""
return {"$documentNumber": {}}
|
ShiftExpr
Bases: ExpressionBase
$shift window operator - accesses value from different position.
Example
ShiftExpr(output=F("value"), by=1, default=0).model_dump()
{"$shift": {"output": "$value", "by": 1, "default": 0}}
Source code in mongo_aggro/expressions/window.py
| class ShiftExpr(ExpressionBase):
"""
$shift window operator - accesses value from different position.
Example:
>>> ShiftExpr(output=F("value"), by=1, default=0).model_dump()
{"$shift": {"output": "$value", "by": 1, "default": 0}}
"""
output: Any
by: int
default: Any = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $shift expression."""
result: dict[str, Any] = {
"output": serialize_value(self.output),
"by": self.by,
}
if self.default is not None:
result["default"] = serialize_value(self.default)
return {"$shift": result}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $shift expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $shift expression."""
result: dict[str, Any] = {
"output": serialize_value(self.output),
"by": self.by,
}
if self.default is not None:
result["default"] = serialize_value(self.default)
return {"$shift": result}
|
ExpMovingAvgExpr
Bases: ExpressionBase
$expMovingAvg window operator - exponential moving average.
Example
ExpMovingAvgExpr(input=F("price"), n=5).model_dump()
{"$expMovingAvg": {"input": "$price", "N": 5}}
Source code in mongo_aggro/expressions/window.py
| class ExpMovingAvgExpr(ExpressionBase):
"""
$expMovingAvg window operator - exponential moving average.
Example:
>>> ExpMovingAvgExpr(input=F("price"), n=5).model_dump()
{"$expMovingAvg": {"input": "$price", "N": 5}}
"""
input: Any
n: int | None = None
alpha: float | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $expMovingAvg expression."""
result: dict[str, Any] = {"input": serialize_value(self.input)}
if self.n is not None:
result["N"] = self.n
elif self.alpha is not None:
result["alpha"] = self.alpha
return {"$expMovingAvg": result}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $expMovingAvg expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $expMovingAvg expression."""
result: dict[str, Any] = {"input": serialize_value(self.input)}
if self.n is not None:
result["N"] = self.n
elif self.alpha is not None:
result["alpha"] = self.alpha
return {"$expMovingAvg": result}
|
DerivativeExpr
Bases: ExpressionBase
$derivative window operator - calculates rate of change.
Example
DerivativeExpr(input=F("value"), unit="second").model_dump()
{"$derivative": {"input": "$value", "unit": "second"}}
Source code in mongo_aggro/expressions/window.py
| class DerivativeExpr(ExpressionBase):
"""
$derivative window operator - calculates rate of change.
Example:
>>> DerivativeExpr(input=F("value"), unit="second").model_dump()
{"$derivative": {"input": "$value", "unit": "second"}}
"""
input: Any
unit: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $derivative expression."""
result: dict[str, Any] = {"input": serialize_value(self.input)}
if self.unit is not None:
result["unit"] = self.unit
return {"$derivative": result}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $derivative expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $derivative expression."""
result: dict[str, Any] = {"input": serialize_value(self.input)}
if self.unit is not None:
result["unit"] = self.unit
return {"$derivative": result}
|
IntegralExpr
Bases: ExpressionBase
$integral window operator - calculates area under curve.
Example
IntegralExpr(input=F("value"), unit="hour").model_dump()
{"$integral": {"input": "$value", "unit": "hour"}}
Source code in mongo_aggro/expressions/window.py
| class IntegralExpr(ExpressionBase):
"""
$integral window operator - calculates area under curve.
Example:
>>> IntegralExpr(input=F("value"), unit="hour").model_dump()
{"$integral": {"input": "$value", "unit": "hour"}}
"""
input: Any
unit: str | None = None
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $integral expression."""
result: dict[str, Any] = {"input": serialize_value(self.input)}
if self.unit is not None:
result["unit"] = self.unit
return {"$integral": result}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $integral expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $integral expression."""
result: dict[str, Any] = {"input": serialize_value(self.input)}
if self.unit is not None:
result["unit"] = self.unit
return {"$integral": result}
|
CovariancePopExpr
Bases: ExpressionBase
$covariancePop window operator - population covariance.
Example
CovariancePopExpr(array=[F("x"), F("y")]).model_dump()
Source code in mongo_aggro/expressions/window.py
| class CovariancePopExpr(ExpressionBase):
"""
$covariancePop window operator - population covariance.
Example:
>>> CovariancePopExpr(array=[F("x"), F("y")]).model_dump()
{"$covariancePop": ["$x", "$y"]}
"""
array: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $covariancePop expression."""
return {"$covariancePop": [serialize_value(a) for a in self.array]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $covariancePop expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $covariancePop expression."""
return {"$covariancePop": [serialize_value(a) for a in self.array]}
|
CovarianceSampExpr
Bases: ExpressionBase
$covarianceSamp window operator - sample covariance.
Example
CovarianceSampExpr(array=[F("x"), F("y")]).model_dump()
Source code in mongo_aggro/expressions/window.py
| class CovarianceSampExpr(ExpressionBase):
"""
$covarianceSamp window operator - sample covariance.
Example:
>>> CovarianceSampExpr(array=[F("x"), F("y")]).model_dump()
{"$covarianceSamp": ["$x", "$y"]}
"""
array: list[Any]
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $covarianceSamp expression."""
return {"$covarianceSamp": [serialize_value(a) for a in self.array]}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $covarianceSamp expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $covarianceSamp expression."""
return {"$covarianceSamp": [serialize_value(a) for a in self.array]}
|
LinearFillExpr
Bases: ExpressionBase
$linearFill window operator - fills nulls with linear interpolation.
Example
LinearFillExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/window.py
| class LinearFillExpr(ExpressionBase):
"""
$linearFill window operator - fills nulls with linear interpolation.
Example:
>>> LinearFillExpr(input=F("value")).model_dump()
{"$linearFill": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $linearFill expression."""
return {"$linearFill": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $linearFill expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $linearFill expression."""
return {"$linearFill": serialize_value(self.input)}
|
LocfExpr
Bases: ExpressionBase
$locf window operator - last observation carried forward.
Example
LocfExpr(input=F("value")).model_dump()
Source code in mongo_aggro/expressions/window.py
| class LocfExpr(ExpressionBase):
"""
$locf window operator - last observation carried forward.
Example:
>>> LocfExpr(input=F("value")).model_dump()
{"$locf": "$value"}
"""
input: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $locf expression."""
return {"$locf": serialize_value(self.input)}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $locf expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $locf expression."""
return {"$locf": serialize_value(self.input)}
|
TopExpr
Bases: ExpressionBase
$top accumulator - returns top element based on sort.
Example
TopExpr(sort_by={"score": -1}, output=F("name")).model_dump()
{"$top": {"sortBy": {"score": -1}, "output": "$name"}}
Source code in mongo_aggro/expressions/window.py
| class TopExpr(ExpressionBase):
"""
$top accumulator - returns top element based on sort.
Example:
>>> TopExpr(sort_by={"score": -1}, output=F("name")).model_dump()
{"$top": {"sortBy": {"score": -1}, "output": "$name"}}
"""
sort_by: dict[str, int]
output: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $top expression."""
return {
"$top": {
"sortBy": self.sort_by,
"output": serialize_value(self.output),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $top expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $top expression."""
return {
"$top": {
"sortBy": self.sort_by,
"output": serialize_value(self.output),
}
}
|
BottomExpr
Bases: ExpressionBase
$bottom accumulator - returns bottom element based on sort.
Example
BottomExpr(sort_by={"score": -1}, output=F("name")).model_dump()
{"$bottom": {"sortBy": {"score": -1}, "output": "$name"}}
Source code in mongo_aggro/expressions/window.py
| class BottomExpr(ExpressionBase):
"""
$bottom accumulator - returns bottom element based on sort.
Example:
>>> BottomExpr(sort_by={"score": -1}, output=F("name")).model_dump()
{"$bottom": {"sortBy": {"score": -1}, "output": "$name"}}
"""
sort_by: dict[str, int]
output: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bottom expression."""
return {
"$bottom": {
"sortBy": self.sort_by,
"output": serialize_value(self.output),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $bottom expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bottom expression."""
return {
"$bottom": {
"sortBy": self.sort_by,
"output": serialize_value(self.output),
}
}
|
TopNWindowExpr
Bases: ExpressionBase
$topN accumulator - returns top N elements based on sort.
Example
TopNWindowExpr(n=3, sort_by={"score": -1}, output=F("name")).model_dump()
{"$topN": {"n": 3, "sortBy": {"score": -1}, "output": "$name"}}
Source code in mongo_aggro/expressions/window.py
| class TopNWindowExpr(ExpressionBase):
"""
$topN accumulator - returns top N elements based on sort.
Example:
>>> TopNWindowExpr(n=3, sort_by={"score": -1}, output=F("name")).model_dump()
{"$topN": {"n": 3, "sortBy": {"score": -1}, "output": "$name"}}
"""
n: Any
sort_by: dict[str, int]
output: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $topN expression."""
return {
"$topN": {
"n": serialize_value(self.n),
"sortBy": self.sort_by,
"output": serialize_value(self.output),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $topN expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $topN expression."""
return {
"$topN": {
"n": serialize_value(self.n),
"sortBy": self.sort_by,
"output": serialize_value(self.output),
}
}
|
BottomNWindowExpr
Bases: ExpressionBase
$bottomN accumulator - returns bottom N elements based on sort.
Example
BottomNWindowExpr(n=3, sort_by={"score": -1}, output=F("name")).model_dump()
{"$bottomN": {"n": 3, "sortBy": {"score": -1}, "output": "$name"}}
Source code in mongo_aggro/expressions/window.py
| class BottomNWindowExpr(ExpressionBase):
"""
$bottomN accumulator - returns bottom N elements based on sort.
Example:
>>> BottomNWindowExpr(n=3, sort_by={"score": -1}, output=F("name")).model_dump()
{"$bottomN": {"n": 3, "sortBy": {"score": -1}, "output": "$name"}}
"""
n: Any
sort_by: dict[str, int]
output: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bottomN expression."""
return {
"$bottomN": {
"n": serialize_value(self.n),
"sortBy": self.sort_by,
"output": serialize_value(self.output),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $bottomN expression.
Source code in mongo_aggro/expressions/window.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $bottomN expression."""
return {
"$bottomN": {
"n": serialize_value(self.n),
"sortBy": self.sort_by,
"output": serialize_value(self.output),
}
}
|
Encrypted String Expressions
These expressions are used with MongoDB Queryable Encryption for searching
encrypted fields while maintaining data security.
EncStrContainsExpr
Bases: ExpressionBase
$encStrContains expression - checks if encrypted string contains substring.
Used with Queryable Encryption for searching encrypted fields.
Example
EncStrContainsExpr(input=F("encryptedField"), substring="search").model_dump()
{"$encStrContains": {"input": "$encryptedField", "substring": "search"}}
Source code in mongo_aggro/expressions/encrypted.py
| class EncStrContainsExpr(ExpressionBase):
"""
$encStrContains expression - checks if encrypted string contains substring.
Used with Queryable Encryption for searching encrypted fields.
Example:
>>> EncStrContainsExpr(input=F("encryptedField"), substring="search").model_dump()
{"$encStrContains": {"input": "$encryptedField", "substring": "search"}}
"""
input: Any
substring: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $encStrContains expression."""
return {
"$encStrContains": {
"input": serialize_value(self.input),
"substring": serialize_value(self.substring),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $encStrContains expression.
Source code in mongo_aggro/expressions/encrypted.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $encStrContains expression."""
return {
"$encStrContains": {
"input": serialize_value(self.input),
"substring": serialize_value(self.substring),
}
}
|
EncStrStartsWithExpr
Bases: ExpressionBase
$encStrStartsWith expression - checks if encrypted string starts with prefix.
Used with Queryable Encryption for searching encrypted fields.
Example
EncStrStartsWithExpr(input=F("encryptedField"), prefix="abc").model_dump()
{"$encStrStartsWith": {"input": "$encryptedField", "prefix": "abc"}}
Source code in mongo_aggro/expressions/encrypted.py
| class EncStrStartsWithExpr(ExpressionBase):
"""
$encStrStartsWith expression - checks if encrypted string starts with prefix.
Used with Queryable Encryption for searching encrypted fields.
Example:
>>> EncStrStartsWithExpr(input=F("encryptedField"), prefix="abc").model_dump()
{"$encStrStartsWith": {"input": "$encryptedField", "prefix": "abc"}}
"""
input: Any
prefix: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $encStrStartsWith expression."""
return {
"$encStrStartsWith": {
"input": serialize_value(self.input),
"prefix": serialize_value(self.prefix),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $encStrStartsWith expression.
Source code in mongo_aggro/expressions/encrypted.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $encStrStartsWith expression."""
return {
"$encStrStartsWith": {
"input": serialize_value(self.input),
"prefix": serialize_value(self.prefix),
}
}
|
EncStrEndsWithExpr
Bases: ExpressionBase
$encStrEndsWith expression - checks if encrypted string ends with suffix.
Used with Queryable Encryption for searching encrypted fields.
Example
EncStrEndsWithExpr(input=F("encryptedField"), suffix="xyz").model_dump()
{"$encStrEndsWith": {"input": "$encryptedField", "suffix": "xyz"}}
Source code in mongo_aggro/expressions/encrypted.py
| class EncStrEndsWithExpr(ExpressionBase):
"""
$encStrEndsWith expression - checks if encrypted string ends with suffix.
Used with Queryable Encryption for searching encrypted fields.
Example:
>>> EncStrEndsWithExpr(input=F("encryptedField"), suffix="xyz").model_dump()
{"$encStrEndsWith": {"input": "$encryptedField", "suffix": "xyz"}}
"""
input: Any
suffix: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $encStrEndsWith expression."""
return {
"$encStrEndsWith": {
"input": serialize_value(self.input),
"suffix": serialize_value(self.suffix),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $encStrEndsWith expression.
Source code in mongo_aggro/expressions/encrypted.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $encStrEndsWith expression."""
return {
"$encStrEndsWith": {
"input": serialize_value(self.input),
"suffix": serialize_value(self.suffix),
}
}
|
EncStrNormalizedEqExpr
Bases: ExpressionBase
$encStrNormalizedEq expression - normalized equality for encrypted strings.
Used with Queryable Encryption for case-insensitive matching.
Example
EncStrNormalizedEqExpr(input=F("encryptedField"), value="test").model_dump()
{"$encStrNormalizedEq": {"input": "$encryptedField", "value": "test"}}
Source code in mongo_aggro/expressions/encrypted.py
| class EncStrNormalizedEqExpr(ExpressionBase):
"""
$encStrNormalizedEq expression - normalized equality for encrypted strings.
Used with Queryable Encryption for case-insensitive matching.
Example:
>>> EncStrNormalizedEqExpr(input=F("encryptedField"), value="test").model_dump()
{"$encStrNormalizedEq": {"input": "$encryptedField", "value": "test"}}
"""
input: Any
value: Any
@model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $encStrNormalizedEq expression."""
return {
"$encStrNormalizedEq": {
"input": serialize_value(self.input),
"value": serialize_value(self.value),
}
}
|
serialize
serialize() -> dict[str, Any]
Serialize to MongoDB $encStrNormalizedEq expression.
Source code in mongo_aggro/expressions/encrypted.py
| @model_serializer
def serialize(self) -> dict[str, Any]:
"""Serialize to MongoDB $encStrNormalizedEq expression."""
return {
"$encStrNormalizedEq": {
"input": serialize_value(self.input),
"value": serialize_value(self.value),
}
}
|