1.0.1 • Published 5 years ago

@~graphite/segmenter-objectid v1.0.1

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

Segmenter ObjectId

Segment utilities for ObjectId types. Conveniently bucket data based on an ObjectId hash.

See: segmenter

Installation

npm i @~graphite/segmenter-objectid

Transient dependencies

Examples

Explicit usage

import { ObjectIdSegmenter } from "@~graphite/segmenter-objectid";

const segmenter = new ObjectIdSegmenter();

segmenter.segments(new ObjectId("xxxxxxxxxxxxxxxxxx000000"), ["A", "B"], ["X", "Y"]); // ["A", "X"]
segmenter.segments(new ObjectId("xxxxxxxxxxxxxxxxxx000001"), ["A", "B"], ["X", "Y"]); // ["A", "Y"]
segmenter.segments(new ObjectId("xxxxxxxxxxxxxxxxxx00000d"), ["A", "B"], ["X", "Y"]); // ["A", "Y"]
segmenter.segments(new ObjectId("xxxxxxxxxxxxxxxxxx00000e"), ["A", "B"], ["X", "Y"]); // ["B", "X"]

Extension usage

import "@~graphite/segmenter-objectid";

new ObjectId("xxxxxxxxxxxxxxxxxx000000").segments(["A", "B"], ["X", "Y"]); // ["A", "X"]
new ObjectId("xxxxxxxxxxxxxxxxxx000001").segments(["A", "B"], ["X", "Y"]); // ["A", "Y"]
new ObjectId("xxxxxxxxxxxxxxxxxx00000d").segments(["A", "B"], ["X", "Y"]); // ["A", "Y"]
new ObjectId("xxxxxxxxxxxxxxxxxx00000e").segments(["A", "B"], ["X", "Y"]); // ["B", "X"]

Resolution

  • This segmenter users the trailing 3-bytes of a hexadecimal ObjectID to determine bucket indexing. This specification is arbitrary to MongoDB's implementation of ObjectIDs which describes this portion of the ObjectID as a counter, starting with a random value.