Code Duplication    Length = 26-26 lines in 2 locations

lib/Doctrine/ODM/MongoDB/Query/Expr.php 2 locations

@@ 710-735 (lines=26) @@
707
            $storeAs = array_key_exists('storeAs', $mapping) ? $mapping['storeAs'] : null;
708
            $keys = [];
709
710
            switch ($storeAs) {
711
                case ClassMetadataInfo::REFERENCE_STORE_AS_ID:
712
                    $this->query[$mapping['name']] = $reference;
713
                    return $this;
714
                    break;
715
716
                case ClassMetadataInfo::REFERENCE_STORE_AS_REF:
717
                    $keys = ['id' => true];
718
                    break;
719
720
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF:
721
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF_WITH_DB:
722
                    $keys = ['$ref' => true, '$id' => true, '$db' => true];
723
724
                    if ($storeAs === ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF) {
725
                        unset($keys['$db']);
726
                    }
727
728
                    if (isset($mapping['targetDocument'])) {
729
                        unset($keys['$ref'], $keys['$db']);
730
                    }
731
                    break;
732
733
                default:
734
                    throw new \InvalidArgumentException("Reference type {$storeAs} is invalid.");
735
            }
736
737
            foreach ($keys as $key => $value) {
738
                $this->query[$mapping['name']]['$elemMatch'][$key] = $reference[$key];
@@ 1135-1160 (lines=26) @@
1132
            $storeAs = array_key_exists('storeAs', $mapping) ? $mapping['storeAs'] : null;
1133
            $keys = [];
1134
1135
            switch ($storeAs) {
1136
                case ClassMetadataInfo::REFERENCE_STORE_AS_ID:
1137
                    $this->query[$mapping['name']] = $reference;
1138
                    return $this;
1139
                    break;
1140
1141
                case ClassMetadataInfo::REFERENCE_STORE_AS_REF:
1142
                    $keys = ['id' => true];
1143
                    break;
1144
1145
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF:
1146
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF_WITH_DB:
1147
                    $keys = ['$ref' => true, '$id' => true, '$db' => true];
1148
1149
                    if ($storeAs === ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF) {
1150
                        unset($keys['$db']);
1151
                    }
1152
1153
                    if (isset($mapping['targetDocument'])) {
1154
                        unset($keys['$ref'], $keys['$db']);
1155
                    }
1156
                    break;
1157
1158
                default:
1159
                    throw new \InvalidArgumentException("Reference type {$storeAs} is invalid.");
1160
            }
1161
1162
            foreach ($keys as $key => $value) {
1163
                $this->query[$mapping['name'] . '.' . $key] = $reference[$key];