Skip to content

Field-equals ​

Create a RecordPredicate that returns true when a record contains a field whose key and value both match exactly. Use it for stable attribute-based routing.

Interface ​

moonbit
pub fn field_equals(key : String, value : String) -> RecordPredicate {}

input ​

  • key : String - Field key to inspect.
  • value : String - Exact value expected for that key.

output ​

  • RecordPredicate - Predicate that matches records containing a field with the expected key and value.

Explanation ​

Detailed rules explaining key parameters and behaviors

  • Matching requires both field.key == key and field.value == value.
  • The predicate returns true on the first matching field.
  • This helper is useful for routing records by environment, tenant, operation name, or fixed tags.
  • It is stricter than has_field(...) because presence alone is not enough.

How to Use ​

Here are some specific examples provided.

When Keep One Tenant Stream ​

When log routing should isolate one tenant:

moonbit
let logger = Logger::new(console_sink())
  .with_filter(field_equals("tenant", "acme"))

In this example, records for other tenants are excluded.

When Combine With Exact Target Matching ​

When field and target must both match:

moonbit
let predicate = all_of([
  target_is("billing"),
  field_equals("region", "cn"),
])

In this example, only billing records tagged for the cn region remain.

Error Case ​

e.g.:

  • If key or value is empty, matching still uses exact equality and may produce no results unless records contain the same empty string.

  • If a record contains the key with multiple values, any one exact match is enough for the predicate to return true.

Notes ​

  1. Prefer exact field matching over message substring matching for long-term routing rules.

  2. Keep field naming stable across producers if this predicate is reused in shared configs.

Published from the repository docs folder with VitePress.