rabin 1 year ago
parent
commit
b21436ac08
1 changed files with 13 additions and 7 deletions
  1. 13 7
      src/Dever/Store/Mongo.php

+ 13 - 7
src/Dever/Store/Mongo.php

@@ -289,6 +289,8 @@ class Mongo extends Base
                         $result[$k] = $this->where($k, $v);
                     }
                 }
+            } elseif (is_numeric($param)) {
+                $result['id'] = $this->where('id', $param);
             } elseif ($param) {
                 $result['_id'] = $this->where('_id', $param);
             } else {
@@ -297,7 +299,7 @@ class Mongo extends Base
         }
         return $result;
     }
-    private function where($key, $value)
+    private function where(&$key, $value)
     {
         $method = '';
         if (is_array($value)) {
@@ -354,10 +356,15 @@ class Mongo extends Base
         }
         return $value;
     }
-    private function value($key, $value)
+    private function value(&$key, $value)
     {
-        if ($key == '_id' && !is_numeric($value)) {
-            $value = new ObjectId($value);
+        if ($key == '_id') {
+            if (is_numeric($value)) {
+                $key = 'id';
+                $value = (float) $value;
+            } else {
+                $value = new ObjectId($value);
+            }
         } elseif (is_numeric($value)) {
             $value = (float) $value;
         }
@@ -369,10 +376,9 @@ class Mongo extends Base
         $v['_id'] = (array) $v['_id'];
         if (isset($v['_id']['oid'])) {
             $v['_id'] = $v['_id']['oid'];
-            if (isset($v['id'])) {
-                $v['oid'] = $v['id'];
+            if (!isset($v['id'])) {
+                $v['id'] = $v['_id'];
             }
-            $v['id'] = $v['_id'];
         } else {
             $v = array_merge($v['_id'], $v);
             unset($v['_id']);