diff options
author | Greg Studer <greg@10gen.com> | 2013-11-01 10:35:06 -0400 |
---|---|---|
committer | Greg Studer <greg@10gen.com> | 2013-11-04 10:16:27 -0500 |
commit | 67bd639528d6d81c0a425c1889147fc25f97915e (patch) | |
tree | 844c5d6fcc9d4713f82271e1c0a93884c1a092ab /src/mongo/db/field_parser.cpp | |
parent | 4c900822abedd44779eaf2e9b8679690e69f9750 (diff) | |
download | mongo-67bd639528d6d81c0a425c1889147fc25f97915e.tar.gz |
SERVER-10519 aggregate upsert and n stats in mongos
Diffstat (limited to 'src/mongo/db/field_parser.cpp')
-rw-r--r-- | src/mongo/db/field_parser.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mongo/db/field_parser.cpp b/src/mongo/db/field_parser.cpp index 0ce90b95e9a..7a3a61b3203 100644 --- a/src/mongo/db/field_parser.cpp +++ b/src/mongo/db/field_parser.cpp @@ -283,4 +283,28 @@ namespace mongo { return FIELD_INVALID; } + FieldParser::FieldState FieldParser::extractID( BSONObj doc, + const BSONField<BSONObj>& field, + BSONObj* out, + string* errMsg ) { + BSONElement elem = doc[field.name()]; + if (elem.eoo()) { + if (field.hasDefault()) { + *out = field.getDefault().firstElement().wrap( "" ); + return FIELD_DEFAULT; + } + else { + return FIELD_NONE; + } + } + + if ( elem.type() != Array ) { + *out = elem.wrap( "" ).getOwned(); + return FIELD_SET; + } + + _genFieldErrMsg(doc, field, "id", errMsg); + return FIELD_INVALID; + } + } // namespace mongo |