MongoDB C++ Driver
legacy-1.1.2
|
BSONElement represents an "element" in a BSONObj. More...
#include <bsonelement.h>
Classes | |
struct | FieldNameSizeTag |
struct | Hasher |
Functor compatible with std::hash for std::unordered_{map,set} Warning: The hash function is subject to change. More... | |
Public Member Functions | |
std::string | String () const |
These functions, which start with a capital letter, throw a MsgAssertionException if the element is not of the required type. More... | |
BSONObj | Obj () const |
void | Val (Date_t &v) const |
populate v with the value of the element. More... | |
bool | ok () const |
Use ok() to check if a value is assigned: if( myObj["foo"].ok() ) ... | |
BSONType | type () const |
Returns the type of the element. | |
BSONElement | operator[] (const std::string &field) const |
retrieve a field within this element throws exception if *this is not an embedded object | |
int | canonicalType () const |
See canonicalizeBSONType in bsontypes.h. | |
bool | eoo () const |
Indicates if it is the end-of-object element, which is present at the end of every BSON object. | |
int | size (int maxLen) const |
Size of the element. More... | |
BSONObj | wrap () const |
Wrap this element up as a singleton object. More... | |
BSONObj | wrap (const StringData &newName) const |
Wrap this element up as a singleton object with a new name. More... | |
const char * | fieldName () const |
field name of the element. More... | |
int | fieldNameSize () const |
NOTE: size includes the NULL terminator. | |
const char * | value () const |
raw data of the element's value (so be careful). More... | |
int | valuesize () const |
size in bytes of the element's value (when applicable). More... | |
bool | boolean () const |
Date_t | date () const |
Retrieve a java style date value from the element. More... | |
bool | trueValue () const |
Convert the value to boolean, regardless of its type, in a javascript-like fashion (i.e., treats zero and null and eoo as false). | |
bool | isSimpleType () const |
True if number, string, bool, date, OID. | |
bool | isNumber () const |
True if element is of a numeric type. More... | |
double | _numberDouble () const |
Return double value for this field. More... | |
int | _numberInt () const |
Return int value for this field. More... | |
long long | _numberLong () const |
Return long long value for this field. More... | |
int | numberInt () const |
Retrieve int value for the element safely. More... | |
long long | numberLong () const |
Retrieve long value for the element safely. More... | |
long long | safeNumberLong () const |
Like numberLong() but with well-defined behavior for doubles that are NaNs, or too large/small to be represented as long longs. More... | |
double | numberDouble () const |
Retrieve the numeric value of the element. More... | |
double | number () const |
Retrieve the numeric value of the element. More... | |
mongo::OID | __oid () const |
Retrieve the object ID stored in the object. More... | |
bool | isNull () const |
True if element is null. More... | |
int | valuestrsize () const |
Size (length) of a string element. More... | |
const char * | valuestr () const |
Get a string's value. More... | |
const char * | valuestrsafe () const |
Get the string value of the element. More... | |
std::string | str () const |
Get the string value of the element. More... | |
const StringData | valueStringData () const |
Returns a StringData pointing into this element's data. More... | |
const char * | codeWScopeCode () const |
Get javascript code of a CodeWScope data element. More... | |
int | codeWScopeCodeLen () const |
Get length of the code part of the CodeWScope object This INCLUDES the null char at the end. | |
const char * | codeWScopeScopeDataUnsafe () const |
Get the scope SavedContext of a CodeWScope data element. More... | |
BSONObj | embeddedObject () const |
Get the embedded object this element holds. More... | |
const char * | binData (int &len) const |
Get raw binary data. More... | |
const char * | binDataClean (int &len) const |
Get binary data. More... | |
const char * | regex () const |
Retrieve the regex string for a Regex element. | |
const char * | regexFlags () const |
Retrieve the regex flags (options) for a Regex element. | |
bool | valuesEqual (const BSONElement &r) const |
like operator== but doesn't check the fieldname, just the value. | |
bool | operator== (const BSONElement &r) const |
Returns true if elements are equal. More... | |
bool | operator!= (const BSONElement &r) const |
Returns true if elements are unequal. More... | |
int | woCompare (const BSONElement &e, bool considerFieldName=true) const |
Well ordered comparison. More... | |
int | getGtLtOp (int def=0) const |
0 == Equality, just not defined yet | |
BSONElement () | |
Constructs an empty element. | |
bool | mayEncapsulate () const |
True if this element may contain subobjects. More... | |
bool | isABSONObj () const |
True if this element can be a BSONObj. | |
bool | operator< (const BSONElement &other) const |
this does not use fieldName in the comparison, just the value | |
BSONElement (const char *d, int fieldNameSize, FieldNameSizeTag) | |
Construct a BSONElement where you already know the length of the name. More... | |
BSONElement represents an "element" in a BSONObj.
So for the object { a : 3, b : "abc" }, 'a : 3' is the first element (key+value).
The BSONElement object points into the BSONObj's data. Thus the BSONObj must stay in scope for the life of the BSONElement.
internals: <type><fieldName>
|
inline |
Construct a BSONElement where you already know the length of the name.
The value passed here includes the null terminator. The data pointed to by 'd' must not represent an EOO. You may pass -1 to indicate that you don't actually know the size.
|
inline |
Retrieve the object ID stored in the object.
You must ensure the element is of type jstOID first.
|
inline |
Return double value for this field.
MUST be NumberDouble type.
|
inline |
Return int value for this field.
MUST be NumberInt type.
|
inline |
Return long long value for this field.
MUST be NumberLong type.
|
inline |
Get raw binary data.
Element must be of type BinData. Doesn't handle type 2 specially
|
inline |
Get binary data.
Element must be of type BinData. Handles type 2
|
inline |
|
inline |
Get javascript code of a CodeWScope data element.
|
inline |
Get the scope SavedContext of a CodeWScope data element.
This function is DEPRECATED, since it can error if there are null chars in the codeWScopeCode. However, some existing indexes may be based on an incorrect ordering derived from this function, so it may still need to be used in certain cases.
|
inline |
Retrieve a java style date value from the element.
Ensure element is of type Date before calling.
BSONObj mongo::BSONElement::embeddedObject | ( | ) | const |
Get the embedded object this element holds.
|
inline |
field name of the element.
e.g., for name : "Joe" "name" is the fieldname
|
inline |
True if element is null.
|
inline |
True if element is of a numeric type.
|
inline |
True if this element may contain subobjects.
|
inline |
Retrieve the numeric value of the element.
If not of a numeric type, returns 0. Note: casts to double, data loss may occur with large (>52 bit) NumberLong values.
|
inline |
Retrieve the numeric value of the element.
If not of a numeric type, returns 0. Note: casts to double, data loss may occur with large (>52 bit) NumberLong values.
|
inline |
Retrieve int value for the element safely.
Zero returned if not a number.
Zero returned if not a number. Converted to int if another numeric type.
|
inline |
Retrieve long value for the element safely.
Zero returned if not a number. Behavior is not defined for double values that are NaNs, or too large/small to be represented by long longs
Zero returned if not a number.
BSONObj mongo::BSONElement::Obj | ( | ) | const |
|
inline |
Returns true if elements are unequal.
|
inline |
Returns true if elements are equal.
|
inline |
Like numberLong() but with well-defined behavior for doubles that are NaNs, or too large/small to be represented as long longs.
NaNs -> 0 very large doubles -> LLONG_MAX very small doubles -> LLONG_MIN
int mongo::BSONElement::size | ( | int | maxLen | ) | const |
Size of the element.
maxLen | If maxLen is specified, don't scan more than maxLen bytes to calculate size. |
|
inline |
Get the string value of the element.
If not a string returns "".
|
inline |
These functions, which start with a capital letter, throw a MsgAssertionException if the element is not of the required type.
Example:
std::string foo = obj["foo"].String(); // std::exception if not a std::string type or DNE
|
inline |
populate v with the value of the element.
If type does not match, throw exception. useful in templates – see also BSONObj::Vals().
|
inline |
raw data of the element's value (so be careful).
|
inline |
size in bytes of the element's value (when applicable).
|
inline |
Get a string's value.
Also gives you start of the real data for an embedded object. You must assure data is of an appropriate type first – see also valuestrsafe().
|
inline |
Returns a StringData pointing into this element's data.
Does not validate that the element is actually of type String.
|
inline |
Get the string value of the element.
If not a string returns "".
|
inline |
Size (length) of a string element.
You must assure of type String first.
int mongo::BSONElement::woCompare | ( | const BSONElement & | e, |
bool | considerFieldName = true |
||
) | const |
Well ordered comparison.
BSONObj mongo::BSONElement::wrap | ( | ) | const |
Wrap this element up as a singleton object.
BSONObj mongo::BSONElement::wrap | ( | const StringData & | newName | ) | const |
Wrap this element up as a singleton object with a new name.