Commit 8f9c54a1 by Alexander Mohorev

add method findOne() to the Collection class

parent 75ea33ac
...@@ -260,6 +260,18 @@ class Collection extends Object ...@@ -260,6 +260,18 @@ class Collection extends Object
} }
/** /**
* Returns a a single document.
* @param array $condition query condition
* @param array $fields fields to be selected
* @return array|null the single document. Null is returned if the query results in nothing.
* @see http://www.php.net/manual/en/mongocollection.findone.php
*/
public function findOne($condition = [], $fields = [])
{
return $this->mongoCollection->findOne($this->buildCondition($condition), $fields);
}
/**
* Inserts new data into collection. * Inserts new data into collection.
* @param array|object $data data to be inserted. * @param array|object $data data to be inserted.
* @param array $options list of options in format: optionName => optionValue. * @param array $options list of options in format: optionName => optionValue.
...@@ -372,11 +384,12 @@ class Collection extends Object ...@@ -372,11 +384,12 @@ class Collection extends Object
* @param array $options list of options in format: optionName => optionValue. * @param array $options list of options in format: optionName => optionValue.
* @return integer|boolean number of updated documents or whether operation was successful. * @return integer|boolean number of updated documents or whether operation was successful.
* @throws Exception on failure. * @throws Exception on failure.
* @see http://www.php.net/manual/en/mongocollection.remove.php
*/ */
public function remove($condition = [], $options = []) public function remove($condition = [], $options = [])
{ {
$condition = $this->buildCondition($condition); $condition = $this->buildCondition($condition);
$options = array_merge(['w' => 1, 'multiple' => true], $options); $options = array_merge(['w' => 1, 'justOne' => false], $options);
$token = $this->composeLogToken('remove', [$condition, $options]); $token = $this->composeLogToken('remove', [$condition, $options]);
Yii::info($token, __METHOD__); Yii::info($token, __METHOD__);
try { try {
...@@ -522,7 +535,7 @@ class Collection extends Object ...@@ -522,7 +535,7 @@ class Collection extends Object
* Argument will be automatically cast to [[\MongoCode]]. * Argument will be automatically cast to [[\MongoCode]].
* @param string|array $out output collection name. It could be a string for simple output * @param string|array $out output collection name. It could be a string for simple output
* ('outputCollection'), or an array for parametrized output (['merge' => 'outputCollection']). * ('outputCollection'), or an array for parametrized output (['merge' => 'outputCollection']).
* You can pass ['inline' => true] to fetch the result at once without temporary collection usage. * You can pass ['inline' => true] to fetch the result at once without temporary collection usage.
* @param array $condition criteria for including a document in the aggregation. * @param array $condition criteria for including a document in the aggregation.
* @param array $options additional optional parameters to the mapReduce command. Valid options include: * @param array $options additional optional parameters to the mapReduce command. Valid options include:
* - sort - array - key to sort the input documents. The sort key must be in an existing index for this collection. * - sort - array - key to sort the input documents. The sort key must be in an existing index for this collection.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment