static BSONElement extractKeyElementFromMatchable(const MatchableDocument& matchable, const StringData& pathStr) { ElementPath path; path.init(pathStr); path.setTraverseNonleafArrays(false); path.setTraverseLeafArray(false); MatchableDocument::IteratorHolder matchIt(&matchable, &path); if (!matchIt->more()) return BSONElement(); BSONElement matchEl = matchIt->next().element(); // We shouldn't have more than one element - we don't expand arrays dassert(!matchIt->more()); return matchEl; }