# filters.mongoexpression¶

The Mongo Expression Filter applies query logic to the input point cloud based on a MongoDB-style query expression using the point cloud attributes.

Default Embedded Stage

This stage is enabled by default

Streamable Stage

This stage supports streaming operations

## Example¶

This example passes through only the points whose Classification is non-zero.

[
"input.las",
{
"type": "filters.expression",
"expression": {
"Classification": { "$ne": 0 } } }, "filtered.las" ]  This example passes through only the points whose ReturnNumber is equal to the NumberOfReturns and the NumberOfReturns is greater than 1. [ "input.las", { "type": "filters.expression", "expression": { "$and": [
{ "ReturnNumber": "NumberOfReturns" },
{ "NumberOfReturns": { "$gt": 1 } } ] } }, "filtered.las" ]  ## Options¶ expression A JSON query Expression containing a combination of query comparisons and logical operators. ## Expression¶ A query expression is a combination of comparison and logical operators that define a query which can be used to select matching points by their attribute values. ### Comparison operators¶ There are 8 valid query comparison operators: • $eq: Matches values equal to a specified value.
• $gt: Matches values greater than a specified value. • $gte: Matches values greater than or equal to a specified value.
• $lt: Matches values less than a specified value. • $lte: Matches values less than or equal to a specified value.
• $ne: Matches values not equal to a specified value. • $in: Matches any of the values specified in the array.
• $nin: Matches none of the values specified in the array. Comparison operators compare a point cloud attribute with an operand or an array of operands. An operand is either a numeric constant or a string representing a dimension name. For all comparison operators except for $in and $nin, the comparison value must be a single operand. For $in and $nin, the value must be an array of operands. Comparison operator specifications must be contained within an object whose key is the dimension name to be compared. { "Classification": { "$eq": 2 } }

{ "Intensity": { "$gt": 0 } }  { "Classification": { "$in": [2, 6, 9] } }


The $eq comparison operator may be implicitly invoked by setting an attribute name directly to a value. { "Classification": 2 }  ### Logical operators¶ There are 4 valid logical operators: • $and: Applies a logical and on the expressions of the array and returns a match only if all expressions match.
• $not: Inverts the value of the single sub-expression. • $nor: Applies a logical nor on the expressions of the array and returns a match only if all expressions fail to match.
• $nor: Applies a logical or on the expressions of the array and returns a match if any of the expressions match. Logical operators are used to logically combine sub-expressions. All logical operators except for $not are applied to arrays of expressions. $not is applied to a single expression and negates its result. Logical operators may be applied directly to comparison expressions or may contain further nested logical operators. For example: { "$or": [
{ "Classification": 2 },
{ "Intensity": { "$gt": 0 } } ] }  { "$or": [
{ "Classification": 2 },
{ "$and": [ { "ReturnNumber": "NumberOfReturns" }, { "NumberOfReturns": { "$gt": 1 } }
] }
] }

{ "$not": { "$or": [
{ "Classification": 2 },
{ "$and": [ { "ReturnNumber": { "$gt": 0 } },
{ "Z": { "$lte": 42 } } ] } ] } }  For any individual dimension, the logical and may be implicitly invoked via multiple comparisons within the comparison object. For example: { "X": { "$gt": 0, "\$lt": 42 } }