BSONArrayObj* DjondbConnection::find(const char* db, const char* ns, const char* select, const char* filter, const BSONObj& options) { if (_logger->isDebug()) _logger->debug("executing find db: %s, ns: %s, select: %s, filter: %s", db, ns, select, filter); if (!isOpen()) { throw DjondbException(D_ERROR_CONNECTION, "Not connected to any server"); } try { FilterParser* parser = FilterParser::parse(filter); delete parser; } catch (ParseException e) { _logger->error("An error ocurred parsing the filter %s", filter); throw DjondbException(e.errorCode(), e.what()); } FindCommand cmd; cmd.setFilter(filter); cmd.setSelect(select); cmd.setDB(db); cmd.setNameSpace(ns); cmd.setOptions(&options); prepareOptions((Command*)&cmd); _commandWriter->writeCommand(&cmd); cmd.readResult(_inputStream); BSONArrayObj* result = (BSONArrayObj*)cmd.result(); return result; }