diff options
author | Gregory Noma <gregory.noma@gmail.com> | 2020-12-07 09:59:02 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-12-07 18:24:35 +0000 |
commit | 5e278021327d3d281bc14466373eeaff9d1cf00b (patch) | |
tree | a9a97e98615c46782bf04431d10d008e7174cca9 /src/mongo/bson/bsonobj.cpp | |
parent | 32336d5a29e8af1500af7410add79f23a5efaad2 (diff) | |
download | mongo-5e278021327d3d281bc14466373eeaff9d1cf00b.tar.gz |
SERVER-53130 Support objects and arrays for time-series bucket min/max
Diffstat (limited to 'src/mongo/bson/bsonobj.cpp')
-rw-r--r-- | src/mongo/bson/bsonobj.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/mongo/bson/bsonobj.cpp b/src/mongo/bson/bsonobj.cpp index f606cb7d13b..39cc5813d4c 100644 --- a/src/mongo/bson/bsonobj.cpp +++ b/src/mongo/bson/bsonobj.cpp @@ -619,12 +619,12 @@ BSONObj BSONObj::addField(const BSONElement& field) const { } BSONObj BSONObj::addFields(const BSONObj& from, - const boost::optional<std::set<std::string>>& fields) const { + const boost::optional<StringDataSet>& fields) const { BSONObjBuilder bob; for (auto&& originalField : *this) { auto commonField = from[originalField.fieldNameStringData()]; // If there is a common field, add the value from 'from' object. - if (commonField && (!fields || fields->count(originalField.fieldName()))) { + if (commonField && (!fields || fields->count(originalField.fieldNameStringData()))) { bob.append(commonField); } else { bob.append(originalField); @@ -634,7 +634,7 @@ BSONObj BSONObj::addFields(const BSONObj& from, for (auto&& fromField : from) { // Ignore the common fields as they are already added earlier. if (!hasField(fromField.fieldNameStringData()) && - (!fields || fields->count(fromField.fieldName()))) { + (!fields || fields->count(fromField.fieldNameStringData()))) { bob.append(fromField); } } @@ -664,6 +664,17 @@ BSONObj BSONObj::removeFields(const std::set<std::string>& fields) const { return bob.obj(); } +BSONObj BSONObj::removeFields(const StringDataSet& fields) const { + BSONObjBuilder bob; + for (auto&& field : *this) { + if (fields.count(field.fieldNameStringData())) { + continue; + } + bob.append(field); + } + return bob.obj(); +} + std::string BSONObj::hexDump() const { std::stringstream ss; const char* d = objdata(); |