void bson_copy( bson *out, const bson *in ) { int i; if ( !out ) return; bson_copy_basic( out, in ); out->cur = out->data + ( in->cur - in->data ); out->dataSize = in->dataSize; out->finished = in->finished; out->stackPos = in->stackPos; out->err = in->err; for( i=0; i<out->stackPos; i++ ) out->stack[i] = in->stack[i]; }
int mongo_find_one( mongo *conn, const char *ns, bson *query, bson *fields, bson *out ) { mongo_cursor *cursor = mongo_find( conn, ns, query, fields, 1, 0, 0 ); if ( cursor && mongo_cursor_next( cursor ) == MONGO_OK ) { bson_copy_basic( out, &cursor->current ); mongo_cursor_destroy( cursor ); return MONGO_OK; } else { mongo_cursor_destroy( cursor ); return MONGO_ERROR; } }