summaryrefslogtreecommitdiff
path: root/src/mongo/db/field_parser-inl.h
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2015-01-12 08:35:02 -0500
committerEliot Horowitz <eliot@10gen.com>2015-01-12 08:35:14 -0500
commitd0802b350f70999f2d9e8d3b718f2cbed3163a31 (patch)
tree303690db1f8697c6121664209f959274df51e240 /src/mongo/db/field_parser-inl.h
parentf044f77243692cedebc1ee01ae8ae0a2470de6b0 (diff)
downloadmongo-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.h11
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;
}