/**
  * @param \MongoDbCriteria|array|null $query
  * @return $this[]
  */
 public function findAll($query = null)
 {
     if ($query instanceof MongoDbCriteria) {
         $query->setCollection($this->getCollection());
         $documents = $query->buildCursor();
     } else {
         if (is_array($query) && sizeof($query) > 0) {
             $q = isset($query['condition']) && isset($query['select']) ? $query['condition'] : $query;
             $s = isset($query['select']) ? $query['select'] : [];
             $documents = $this->getCollection()->find($q, $s);
         } else {
             $documents = $this->getCollection()->find();
         }
     }
     $this->afterFind();
     Yii::log("Mongo Query: <pre>" . var_export($query, true), CLogger::LEVEL_TRACE, 'mongo.MongoRecord::findAll()');
     return $this->populateRecords($documents);
 }