예제 #1
0
 Document DocumentSourceBsonArray::getCurrent() {
     verify(haveCurrent);
     BSONObj documentObj(currentElement.Obj());
     Document pDocument(
         Document::createFromBsonObj(&documentObj));
     return pDocument;
 }
예제 #2
0
    void DocumentSourceCursor::findNext() {
	/* standard cursor usage pattern */
	while(pCursor->ok()) {
	    CoveredIndexMatcher *pCIM; // save intermediate result
	    if ((!(pCIM = pCursor->matcher()) ||
		 pCIM->matchesCurrent(pCursor.get())) &&
		!pCursor->getsetdup(pCursor->currLoc())) {

		/* grab the matching document */
		BSONObj documentObj(pCursor->current());
		pCurrent = Document::createFromBsonObj(&documentObj);
		pCursor->advance();
		return;
	    }

	    pCursor->advance();
	}

	/* if we got here, there aren't any more documents */
	pCurrent.reset();
    }