diff options
author | Eliot Horowitz <eliot@10gen.com> | 2015-01-12 08:35:02 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2015-01-12 08:35:14 -0500 |
commit | d0802b350f70999f2d9e8d3b718f2cbed3163a31 (patch) | |
tree | 303690db1f8697c6121664209f959274df51e240 /src/mongo/db/field_parser-inl.h | |
parent | f044f77243692cedebc1ee01ae8ae0a2470de6b0 (diff) | |
download | mongo-d0802b350f70999f2d9e8d3b718f2cbed3163a31.tar.gz |
optimize update request parsing
Diffstat (limited to 'src/mongo/db/field_parser-inl.h')
-rw-r--r-- | src/mongo/db/field_parser-inl.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mongo/db/field_parser-inl.h b/src/mongo/db/field_parser-inl.h index cbcf75a504b..fd919a42adb 100644 --- a/src/mongo/db/field_parser-inl.h +++ b/src/mongo/db/field_parser-inl.h @@ -218,10 +218,19 @@ namespace mongo { return FIELD_NONE; } + return extract(elem, field, out, errMsg); + } + + template<typename T> + FieldParser::FieldState FieldParser::extract(BSONElement elem, + const BSONField<std::vector<T*> >& field, + std::vector<T*>* out, + std::string* errMsg) { + if (elem.type() != Array) { if (errMsg) { *errMsg = stream() << "wrong type for '" << field() << "' field, expected " - << "vector array" << ", found " << doc[field.name()].toString(); + << "vector array" << ", found " << elem.toString(); } return FIELD_INVALID; } |