Пример #1
0
string Command::parseNsFullyQualified(const string& dbname, const BSONObj& cmdObj) {
    BSONElement first = cmdObj.firstElement();
    uassert(ErrorCodes::BadValue,
            str::stream() << "collection name has invalid type " << typeName(first.type()),
            first.canonicalType() == canonicalizeBSONType(mongo::String));
    const NamespaceString nss(first.valueStringData());
    uassert(ErrorCodes::InvalidNamespace,
            str::stream() << "Invalid namespace specified '" << nss.ns() << "'",
            nss.isValid());
    return nss.ns();
}
Пример #2
0
 string Command::parseNsCollectionRequired(const string& dbname, const BSONObj& cmdObj) const {
     // Accepts both BSON String and Symbol for collection name per SERVER-16260
     // TODO(kangas) remove Symbol support in MongoDB 3.0 after Ruby driver audit
     BSONElement first = cmdObj.firstElement();
     uassert(17009,
             "no collection name specified",
             first.canonicalType() == canonicalizeBSONType(mongo::String)
             && first.valuestrsize() > 0);
     std::string coll = first.valuestr();
     return dbname + '.' + coll;
 }
Пример #3
0
NamespaceString Command::parseNsCollectionRequired(const string& dbname,
                                                   const BSONObj& cmdObj) const {
    // Accepts both BSON String and Symbol for collection name per SERVER-16260
    // TODO(kangas) remove Symbol support in MongoDB 3.0 after Ruby driver audit
    BSONElement first = cmdObj.firstElement();
    uassert(40072,
            str::stream() << "collection name has invalid type " << typeName(first.type()),
            first.canonicalType() == canonicalizeBSONType(mongo::String));
    NamespaceString nss(dbname, first.valuestr());
    uassert(ErrorCodes::InvalidNamespace, "Not a valid namespace", nss.isValid());
    return nss;
}