private function isEquivalentIndexKeys(IndexInfo $mongoIndex, array $documentIndex) : bool
    {
        $mongoIndexKeys    = $mongoIndex['key'];
        $documentIndexKeys = $documentIndex['keys'];

        /* If we are dealing with text indexes, we need to unset internal fields
         * from the MongoDB index and filter out text fields from the document
         * index. This will leave only non-text fields, which we can compare as
         * normal. Any text fields in the document index will be compared later
         * with isEquivalentTextIndexWeights(). */
        if (isset($mongoIndexKeys['_fts']) && $mongoIndexKeys['_fts'] === 'text') {
            unset($mongoIndexKeys['_fts'], $mongoIndexKeys['_ftsx']);

            $documentIndexKeys = array_filter($documentIndexKeys, static function ($type) {
                return $type !== 'text';
            });
        }

        /* Avoid a strict equality check here. The numeric type returned by
         * MongoDB may differ from the document index without implying that the
         * indexes themselves are inequivalent. */
        // phpcs:disable SlevomatCodingStandard.ControlStructures.DisallowEqualOperators.DisallowedEqualOperator
        return $mongoIndexKeys == $documentIndexKeys;
    }
private function isEquivalentIndexKeys(IndexInfo $mongoIndex, array $documentIndex) : bool
    {
        $mongoIndexKeys    = $mongoIndex['key'];
        $documentIndexKeys = $documentIndex['keys'];

        /* If we are dealing with text indexes, we need to unset internal fields
         * from the MongoDB index and filter out text fields from the document
         * index. This will leave only non-text fields, which we can compare as
         * normal. Any text fields in the document index will be compared later
         * with isEquivalentTextIndexWeights(). */
        if (isset($mongoIndexKeys['_fts']) && $mongoIndexKeys['_fts'] === 'text') {
            unset($mongoIndexKeys['_fts'], $mongoIndexKeys['_ftsx']);

            $documentIndexKeys = array_filter($documentIndexKeys, static function ($type) {
                return $type !== 'text';
            });
        }

        /* Avoid a strict equality check here. The numeric type returned by
         * MongoDB may differ from the document index without implying that the
         * indexes themselves are inequivalent. */
        // phpcs:disable SlevomatCodingStandard.ControlStructures.DisallowEqualOperators.DisallowedEqualOperator
        return $mongoIndexKeys == $documentIndexKeys;
    }
private function isEquivalentIndexKeys ( IndexInfo $ mongoIndex , array $ documentIndex ) : bool { $ mongoIndexKeys = $ mongoIndex [ 'key' ] ; $ documentIndexKeys = $ documentIndex [ 'keys' ] ; /* If we are dealing with text indexes, we need to unset internal fields
         * from the MongoDB index and filter out text fields from the document
         * index. This will leave only non-text fields, which we can compare as
         * normal. Any text fields in the document index will be compared later
         * with isEquivalentTextIndexWeights(). */ if ( isset ( $ mongoIndexKeys [ '_fts' ] ) && $ mongoIndexKeys [ '_fts' ] === 'text' ) { unset ( $ mongoIndexKeys [ '_fts' ] , $ mongoIndexKeys [ '_ftsx' ] ) ; $ documentIndexKeys = array_filter ( $ documentIndexKeys , static function ( $ type ) { return $ type !== 'text' ; } ) ; } /* Avoid a strict equality check here. The numeric type returned by
         * MongoDB may differ from the document index without implying that the
         * indexes themselves are inequivalent. */ // phpcs:disable SlevomatCodingStandard.ControlStructures.DisallowEqualOperators.DisallowedEqualOperator return $ mongoIndexKeys == $ documentIndexKeys ; }
Determine if the keys for a MongoDB index can be considered equivalent to
those for an index in class metadata.
Determine if the keys for a MongoDB index can be considered equivalent to those for an index in class metadata .