Movatterモバイル変換


[0]ホーム

URL:


 / 
BSON-v1.12.2
River stage one • 6 direct dependents • 7 total dependents
/BSON::OID

NAME

BSON::OID - BSON type wrapper for Object IDs

VERSION

version v1.12.2

SYNOPSIS

use BSON::Types ':all';my $oid  = bson_oid();my $oid  = bson_oid->from_epoch(1467543496, 0); # for queries onlymy $bytes = $oid->oid;my $hex   = $oid->hex;

DESCRIPTION

This module provides a wrapper around a BSONObject ID.

ATTRIBUTES

oid

A 12-byte (packed) Object ID (OID) string. If not provided, a new OID will be generated.

METHODS

new

my $oid = BSON::OID->new;my $oid = BSON::OID->new( oid => $twelve_bytes );

This is the preferred way to generate an OID. Without arguments, a unique OID will be generated. With a 12-byte string, an object can be created around an existing OID byte-string.

from_epoch

# generate a new OIDmy $oid = BSON::OID->from_epoch( $epoch, 0); # other bytes zeroedmy $oid = BSON::OID->from_epoch( $epoch, $eight_more_bytes );# reset an existing OID$oid->from_epoch( $new_epoch, 0 );$oid->from_epoch( $new_epoch, $eight_more_bytes );

Warning! You should not rely on this method for a source of unique IDs. Use this method for query boundaries, only.

An OID is a twelve-byte string. Typically, the first four bytes represent integer seconds since the Unix epoch in big-endian format. The remaining bytes ensure uniqueness.

With this method, the first argument to this method is an epoch time (in integer seconds). The second argument is the remaining eight-bytes to append to the string.

When called as a class method, it returns a new BSON::OID object. When called as an object method, it mutates the existing internal OID value.

As a special case, if the second argument isdefined and zero ("0"), then the remaining bytes will be zeroed.

my $oid = BSON::OID->from_epoch(1467545180, 0);

This is particularly useful when looking for documents by their insertion date: you can simply look for OIDs which are greater or lower than the one generated with this method.

For backwards compatibility withMango, if called without a second argument, the method generates the remainder of the fields "like usual". This is equivalent to callingBSON::OID->new and replacing the first four bytes with the packed epoch value.

# UNSAFE: don't do this unless you have tomy $oid = BSON::OID->from_epoch(1467545180);

If you insist on creating a unique OID withfrom_epoch, set the remaining eight bytes in a way that guarantees thread-safe uniqueness, such as from a reliable source of randomness (seeCrypt::URandom).

use Crypt::Random 'urandom';my $oid = BSON::OID->from_epoch(1467545180, urandom(8));

hex

Returns theoid attributes as 24-byte hexadecimal value

get_time

Returns a number corresponding to the portion of theoid value that represents seconds since the epoch.

TO_JSON

Returns a string for this OID, with the OID given as 24 hex digits.

If theBSON_EXTJSON option is true, it will instead be compatible with MongoDB'sextended JSON format, which represents it as a document as follows:

{"$oid" : "012345678901234567890123"}

OVERLOAD

The string operator is overloaded so any string operations will actually use the 24-character hex value of the OID. Fallback overloading is enabled.

Both numeric comparison (<=>) and string comparison (cmp) are overloaded to do string comparison of the 24-character hex value of the OID. If used with a non-BSON::OID object, be sure to provide a 24-character hex string or the results are undefined.

THREADS

This module is thread safe.

AUTHORS

  • David Golden <david@mongodb.com>

  • Stefan G. <minimalist@lavabit.com>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2020 by Stefan G. and MongoDB, Inc.

This is free software, licensed under:

The Apache License, Version 2.0, January 2004

Module Install Instructions

To install BSON, copy and paste the appropriate command in to your terminal.

cpanm

cpanm BSON

CPAN shell

perl -MCPAN -e shellinstall BSON

For more information on module installation, please visitthe detailed CPAN module installation guide.

Keyboard Shortcuts

Global
sFocus search bar
?Bring up this help dialog
GitHub
gpGo to pull requests
gigo to github issues (only if github is preferred repository)
POD
gaGo to author
gcGo to changes
giGo to issues
gdGo to dist
grGo to repository/SCM
gsGo to source
gbGo to file browse
Search terms
module: (e.g.module:Plugin)
distribution: (e.g.distribution:Dancer auth)
author: (e.g.author:SONGMU Redis)
version: (e.g.version:1.00)

[8]ページ先頭

©2009-2025 Movatter.jp