diff options
Diffstat (limited to 'src/mongo/scripting/engine.cpp')
-rw-r--r-- | src/mongo/scripting/engine.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/mongo/scripting/engine.cpp b/src/mongo/scripting/engine.cpp index 3f1c1dbe051..fb4136dd7e8 100644 --- a/src/mongo/scripting/engine.cpp +++ b/src/mongo/scripting/engine.cpp @@ -119,6 +119,28 @@ void Scope::append(BSONObjBuilder& builder, const char* fieldName, const char* s case Code: builder.appendCode(fieldName, getString(scopeName)); break; + case jstOID: + builder.append(fieldName, getOID(scopeName)); + break; + case BinData: + getBinData(scopeName, [&fieldName, &builder](const BSONBinData& binData) { + builder.append(fieldName, binData); + }); + break; + case bsonTimestamp: + builder.append(fieldName, getTimestamp(scopeName)); + break; + case MinKey: + builder.appendMinKey(fieldName); + break; + case MaxKey: + builder.appendMaxKey(fieldName); + break; + case RegEx: { + auto regEx = getRegEx(scopeName); + builder.append(fieldName, BSONRegEx{regEx.pattern, regEx.flags}); + break; + } default: uassert(10206, str::stream() << "can't append type from: " << t, 0); } @@ -504,6 +526,18 @@ public: BSONObj getObject(const char* field) { return _real->getObject(field); } + OID getOID(const char* field) { + return _real->getOID(field); + }; + void getBinData(const char* field, std::function<void(const BSONBinData&)> withBinData) { + _real->getBinData(field, std::move(withBinData)); + } + Timestamp getTimestamp(const char* field) { + return _real->getTimestamp(field); + }; + JSRegEx getRegEx(const char* field) { + return _real->getRegEx(field); + }; void setNumber(const char* field, double val) { _real->setNumber(field, val); } |