本文整理汇总了PHP中MongoCursor::sort方法的典型用法代码示例。如果您正苦于以下问题:PHP MongoCursor::sort方法的具体用法?PHP MongoCursor::sort怎么用?PHP MongoCursor::sort使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MongoCursor
的用法示例。
在下文中一共展示了MongoCursor::sort方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
/**
* @param \MongoCursor $cursor
* @param ODM $odm
* @param string|null $class
* @param array $sort
* @param int $limit
* @param int $offset
*/
public function __construct(\MongoCursor $cursor, ODM $odm, $class, array $sort = [], $limit = null, $offset = null)
{
$this->cursor = $cursor;
$this->odm = $odm;
$this->class = $class;
!empty($sort) && $this->cursor->sort($sort);
!empty($limit) && $this->cursor->limit($limit);
!empty($offset) && $this->cursor->skip($offset);
}
示例2: sort
public function sort($fields)
{
if ($this->count() > 1) {
$this->cursor->sort($fields);
}
return $this;
}
示例3: fetchData
/**
* @see CActiveDataProvider::fetchData()
* @return array
*/
public function fetchData()
{
$criteria = $this->getCriteria();
// I have not refactored this line considering that the condition may have changed from total item count to here, maybe.
$this->_builder = new EMongoQueryBuilder($this->model, isset($criteria['condition']) && is_array($criteria['condition']) ? $criteria['condition'] : [], isset($criteria['project']) && !empty($criteria['project']) ? $criteria['project'] : []);
$this->options['condition'] = isset($criteria['condition']) && is_array($criteria['condition']) ? $criteria['condition'] : [];
$this->options['projection'] = isset($criteria['project']) && !empty($criteria['project']) ? $criteria['project'] : [];
// If we have sort and limit and skip setup within the incoming criteria let's set it
if (isset($criteria['sort']) && is_array($criteria['sort'])) {
$this->_builder->sort($criteria['sort']);
}
if (isset($criteria['skip']) && is_int($criteria['skip'])) {
$this->_builder->skip($criteria['skip']);
}
if (isset($criteria['limit']) && is_int($criteria['limit'])) {
$this->_builder->limit($criteria['limit']);
}
if (isset($criteria['hint']) && (is_array($criteria['hint']) || is_string($criteria['hint']))) {
$this->_builder->hint($criteria['hint']);
}
if (($pagination = $this->getPagination()) !== false) {
$pagination->setItemCount($this->getTotalItemCount());
$this->_builder->limit($pagination->getLimit());
$this->_builder->skip($pagination->getOffset());
}
if (($sort = $this->getSort()) !== false) {
$sort = $sort->getOrderBy();
if (count($sort) > 0) {
$this->_builder->sort($sort);
}
}
// var_dump(iterator_to_array($this->_builder->find()));die;
return $this->_builder->queryAll(true);
}
示例4: fetchData
/**
* @see CActiveDataProvider::fetchData()
* @return array
*/
public function fetchData()
{
$criteria = $this->getCriteria();
// I have not refactored this line considering that the condition may have changed from total item count to here, maybe.
$this->_cursor = $this->model->find(isset($criteria['condition']) && is_array($criteria['condition']) ? $criteria['condition'] : array(), isset($criteria['project']) && !empty($criteria['project']) ? $criteria['project'] : array());
// If we have sort and limit and skip setup within the incoming criteria let's set it
if (isset($criteria['sort']) && is_array($criteria['sort'])) {
$this->_cursor->sort($criteria['sort']);
}
if (isset($criteria['skip']) && is_int($criteria['skip'])) {
$this->_cursor->skip($criteria['skip']);
}
if (isset($criteria['limit']) && is_int($criteria['limit'])) {
$this->_cursor->limit($criteria['limit']);
}
if (isset($criteria['hint']) && (is_array($criteria['hint']) || is_string($criteria['hint']))) {
$this->_cursor->hint($criteria['hint']);
}
if (($pagination = $this->getPagination()) !== false) {
$pagination->setItemCount($this->getTotalItemCount());
$this->_cursor->limit($pagination->getLimit());
$this->_cursor->skip($pagination->getOffset());
}
if (($sort = $this->getSort()) !== false) {
$sort = $sort->getOrderBy();
if (count($sort) > 0) {
$this->_cursor->sort($sort);
}
}
return iterator_to_array($this->_cursor, false);
}
示例5: sort
/**
* Wrapper method for MongoCursor::sort().
*
* @see http://php.net/manual/en/mongocursor.sort.php
* @param array $fields
* @return self
*/
public function sort($fields)
{
foreach ($fields as $fieldName => $order) {
if (is_string($order)) {
$order = strtolower($order) === 'asc' ? 1 : -1;
}
$fields[$fieldName] = (int) $order;
}
$this->sort = $fields;
$this->mongoCursor->sort($fields);
return $this;
}
示例6: _apply_cursor_controls
/**
* Apply the limit,skip,sort options to the cursor before iterating on documents
*/
protected function _apply_cursor_controls()
{
if ($this->_Cursor) {
if ($this->_cursor_controls['limit'] !== null) {
$this->_Cursor->limit($this->_cursor_controls['limit']);
}
if ($this->_cursor_controls['skip'] !== null) {
$this->_Cursor->skip($this->_cursor_controls['skip']);
}
if (!empty($this->_cursor_controls['sort'])) {
$this->_Cursor->sort($this->_cursor_controls['sort']);
}
}
}
示例7: configureCursor
public function configureCursor()
{
if ($this->cursor === null) {
return;
}
if ($this->getOffset() > -1) {
$this->cursor->skip($this->getOffset());
}
if ($this->getLimit() > -1) {
$this->cursor->limit($this->getLimit());
}
if ($this->getOrder() !== null) {
$this->cursor->sort($this->getOrder());
}
}
示例8: getCursorFromQueryLog
/**
* Create MongoCursor from string query log
*
* @param string $queryString
* @return \MongoCursor|null
*/
protected function getCursorFromQueryLog($queryString)
{
$cursor = null;
$connection = $this->panel->getDb();
$connection->open();
if ($connection->isActive) {
$queryInfo = Json::decode($queryString);
$query = $this->prepareQuery(isset($queryInfo['query']['$query']) ? $queryInfo['query']['$query'] : $queryInfo['query']);
$cursor = new \MongoCursor($connection->mongoClient, $queryInfo['ns'], $query, $queryInfo['fields']);
$cursor->limit($queryInfo['limit']);
$cursor->skip($queryInfo['skip']);
if (isset($queryInfo['query']['$orderby'])) {
$cursor->sort($queryInfo['query']['$orderby']);
}
}
return $cursor;
}
示例9: getCursor
/**
* {@inheritDoc}
*/
public function getCursor()
{
if (is_null($this->cursor)) {
$rawCollection = $this->connection->getRaw()->{$this->collection->getName()};
if (empty($this->criteria)) {
$this->cursor = $rawCollection->find();
} else {
$this->cursor = $rawCollection->find($this->criteria);
}
if (isset($this->sorts)) {
$this->cursor->sort($this->sorts);
}
if (isset($this->skip)) {
$this->cursor->skip($this->skip);
}
if (isset($this->limit)) {
$this->cursor->limit($this->limit);
}
}
return $this->cursor;
}
示例10: getCursor
/**
*
* @return \MongoCursor
*/
private function getCursor()
{
if ($this->cursor) {
return $this->cursor;
}
$this->cursor = $this->collection->getMongoCollection()->find($this->expression->toArray(), $this->fields);
if ($this->skip) {
$this->cursor->skip($this->skip);
}
if ($this->limit) {
$this->cursor->limit($this->limit);
}
if ($this->options['batchSize']) {
$this->cursor->batchSize($this->options['batchSize']);
}
if ($this->options['clientTimeout']) {
$this->cursor->timeout($this->options['clientTimeout']);
}
if ($this->options['serverTimeout']) {
$this->cursor->maxTimeMS($this->options['clientTimeout']);
}
if ($this->sort) {
$this->cursor->sort($this->sort);
}
if ($this->hint) {
$this->cursor->hint($this->hint);
}
// log request
if ($this->client->hasLogger()) {
$this->client->getLogger()->debug(get_called_class() . ': ' . json_encode(array('collection' => $this->collection->getName(), 'query' => $this->expression->toArray(), 'project' => $this->fields, 'sort' => $this->sort)));
}
$this->cursor->rewind();
// define read preferences
if ($this->readPreference) {
$this->cursor->setReadPreference($this->readPreference['type'], $this->readPreference['tagsets']);
}
return $this->cursor;
}
示例11: sort
/**
* Sorts the results by given fields
* @link http://www.php.net/manual/en/mongocursor.sort.php
* @param array $fields An array of fields by which to sort. Each element in the array has as key the field name, and as value either 1 for ascending sort, or -1 for descending sort
* @throws MongoCursorException
* @return $this Returns the same cursor that this method was called on
*/
public function sort(array $fields)
{
$this->cursor->sort($fields);
return $this;
}
示例12: sort
/**
* Apply sorting directives
* {@see http://www.php.net/manual/en/mongocursor.sort.php}
* @param array $sort sorting directives
* @since v1.3.4
*/
public function sort(array $fields)
{
$this->_cursor->sort($fields);
}
示例13: sort
/**
* Sort by the field
*
* @since v1.0.0
*/
public function sort($fields)
{
return $this->_cursor->sort($fields);
}
示例14: view
/**
* Lets you view data
*
* @param Array $criteria the conditions for the data to be viewed
* @param Array $sort what values you want to sort by
* @param int $limit how many documents to return back
* @param Array $fields what fields you want to return back
* @return Array all the documents back as associative arrays
*/
public function view($criteria = array(), $sort = array(), $limit = 100, $fields = array())
{
ValidatorsUtil::isNullOrEmpty($this->_mongoCollection, "Mongo collection isn't valid, have you set a collection?");
$this->_mongoCursor = $this->_mongoCollection->find($criteria, $fields);
if (is_array($sort) && count($sort) != 0) {
$this->_mongoCursor->sort($sort);
}
if (is_numeric($limit)) {
$this->_mongoCursor->limit($limit);
}
$counter = 0;
$this->_documents = array();
foreach ($this->_mongoCursor as $document) {
$this->_documents[$counter] = $document;
$counter++;
}
if ($counter == 0) {
$this->_documents = array();
}
$this->_count = $counter;
$this->_id = "";
return $this->_documents;
}
示例15: sort
/**
* @return Result a sort on the cursor
* @param array $sortoptions
* @returns Result
*/
public function sort(array $sortoptions)
{
$this->myResultCursor = $this->myResultCursor->sort($sortoptions);
return $this;
}