Documentation ¶
Overview ¶
Package bsonutil provides utilities for processing BSON data.
Index ¶
- Variables
- func Bson2Float64(data interface{}) (float64, bool)
- func ConvertBSONValueToLegacyExtJSON(x interface{}) (interface{}, error)
- func ConvertLegacyExtJSONDocumentToBSON(doc map[string]interface{}) error
- func ConvertLegacyExtJSONValueToBSON(x interface{}) (interface{}, error)
- func ConvertLegacyIndexKeys(indexKey bson.D, ns string)
- func ConvertLegacyIndexOptions(indexOptions bson.M)
- func ConvertLegacyIndexOptionsFromOp(indexOptions *bson.D)
- func CreateExtJSONString(doc interface{}) string
- func FindIntByKey(keyName string, document *bson.D) (int, error)
- func FindStringValueByKey(keyName string, document *bson.D) (string, error)
- func FindSubdocumentByKey(keyName string, document *bson.D) (bson.D, error)
- func FindValueByKey(keyName string, document *bson.D) (interface{}, error)
- func GetBSONValueAsLegacyExtJSON(x interface{}) (interface{}, error)
- func GetExtendedBsonD(doc bson.D) (bson.D, error)
- func IsEqual(left, right bson.D) (bool, error)
- func IsIndexKeysEqual(indexKey1 bson.D, indexKey2 bson.D) bool
- func MakeSortString(sortObj bson.D) ([]string, error)
- func MtoD(m bson.M) bson.D
- func ParseLegacyExtJSONValue(jsonValue interface{}) (interface{}, error)
- func ParseSpecialKeys(special interface{}) (interface{}, error)
- func RemoveKey(key string, document *bson.D) (interface{}, bool)
- type MarshalD
Constants ¶
This section is empty.
Variables ¶
var ErrNoSuchField = errors.New("no such field")
Functions ¶
func Bson2Float64 ¶
func ConvertBSONValueToLegacyExtJSON ¶
func ConvertBSONValueToLegacyExtJSON(x interface{}) (interface{}, error)
ConvertBSONValueToLegacyExtJSON walks through a document or an array and converts any BSON value to its corresponding extended JSON type. It returns the converted JSON document and any error encountered.
func ConvertLegacyExtJSONDocumentToBSON ¶
ConvertLegacyExtJSONDocumentToBSON iterates through the document map and converts JSON values to their corresponding BSON values. It also replaces any extended JSON type value (e.g. $date) with the corresponding BSON type
func ConvertLegacyExtJSONValueToBSON ¶
func ConvertLegacyExtJSONValueToBSON(x interface{}) (interface{}, error)
ConvertLegacyExtJSONValueToBSON walks through a document or an array and replaces any extended JSON value with its corresponding BSON type.
func ConvertLegacyIndexKeys ¶
ConvertLegacyIndexKeys transforms the values of index definitions pre 3.4 into the stricter index definitions of 3.4+. Prior to 3.4, any value in an index key that isn't a negative number or that isn't a string is treated as int32(1). The one exception is an empty string is treated as int32(1). All other strings that aren't one of ["2d", "geoHaystack", "2dsphere", "hashed", "text", ""] will cause the index build to fail. See TOOLS-2412 for more information.
This function logs the keys that are converted.
func ConvertLegacyIndexOptions ¶
ConvertLegacyIndexOptions removes options that don't match a known list of index options. It is preferable to use the ignoreUnknownIndexOptions on the createIndex command to force the server to do this task. But that option was only added in 4.1.9. So for pre 3.4 indexes being added to servers 3.4 - 4.2, we must strip the options in the client. This function processes the indexes Options inside collection dump.
func ConvertLegacyIndexOptionsFromOp ¶
ConvertLegacyIndexOptionsFromOp removes options that don't match a known list of index options. It is preferable to use the ignoreUnknownIndexOptions on the createIndex command to force the server to do this task. But that option was only added in 4.1.9. So for pre 3.4 indexes being added to servers 3.4 - 4.2, we must strip the options in the client. This function processes the index options inside createIndexes command.
func CreateExtJSONString ¶
func CreateExtJSONString(doc interface{}) string
CreateExtJSONString stringifies doc as Extended JSON. It does not error if it's unable to marshal the doc to JSON.
func FindIntByKey ¶
FindIntByKey returns the value of keyName in the document as an int for either int32 or int64 underlying type.
func FindStringValueByKey ¶
FindStringValueByKey returns the value of keyName in document as a String. Returns an error if keyName is not found in the top-level of the document, or if it is found but its value is not a string.
func FindSubdocumentByKey ¶
FindSubdocumentByKey returns the value of keyName in document as a document. Returns an error if keyName is not found in the top-level of the document, or if it is found but its value is not a document.
func FindValueByKey ¶
FindValueByKey returns the value of keyName in document. If keyName is not found in the top-level of the document, ErrNoSuchField is returned as the error.
func GetBSONValueAsLegacyExtJSON ¶
func GetBSONValueAsLegacyExtJSON(x interface{}) (interface{}, error)
GetBSONValueAsLegacyExtJSON is equivalent to ConvertBSONValueToLegacyExtJSON, but does not mutate its argument.
func GetExtendedBsonD ¶
GetExtendedBsonD iterates through the document and returns a bson.D that adds type information for each key in document.
func MakeSortString ¶
MakeSortString takes a bson.D object and converts it to a slice of strings that can be used as the input args to mgo's .Sort(...) function. For example: {a:1, b:-1} -> ["+a", "-b"]
func ParseLegacyExtJSONValue ¶
func ParseLegacyExtJSONValue(jsonValue interface{}) (interface{}, error)
ParseLegacyExtJSONValue takes any value generated by the json package and returns a BSON version of that value.
func ParseSpecialKeys ¶
func ParseSpecialKeys(special interface{}) (interface{}, error)
ParseSpecialKeys takes a JSON document and inspects it for any extended JSON type (e.g $numberLong) and replaces any such values with the corresponding BSON type. (uses legacy extJSON parser)
Types ¶
type MarshalD ¶
MarshalD is a wrapper for bson.D that allows unmarshalling of bson.D with preserved order. Necessary for printing certain database commands.
func (MarshalD) MarshalJSON ¶
MarshalJSON makes the MarshalD type usable by the encoding/json package.