test> db.createCollection("tarr") db.createCollection("tarr") { ok: 1 } test> db.tarr.insertMany( [ { "id": 1, "zip": 11111 }, { "id": 2, "zip": [12345, 54321] }, { "id": 3, "zip": [99999, 11111] }, { "id": 3, "zip": ["99999", "11111"] } ] ) db.tarr.insertMany( ... [ ... { ... "id": 1, ... "zip": 11111 ... }, ... { ... "id": 2, ... "zip": [12345, 54321] ... }, ... { ... "id": 3, ... "zip": [99999, 11111] ... }, ... { ... "id": 3, ... "zip": ["99999", "11111"] ... } ... ] ... ) { acknowledged: true, insertedIds: { '0': ObjectId('68a409b81f487b865189b044'), '1': ObjectId('68a409b81f487b865189b045'), '2': ObjectId('68a409b81f487b865189b046'), '3': ObjectId('68a409b81f487b865189b047') } } test> test> test> test> db.tarr.find({"zip": 11111}) db.tarr.find({"zip": 11111}) [ { _id: ObjectId('68a409b81f487b865189b044'), id: 1, zip: 11111 }, { _id: ObjectId('68a409b81f487b865189b046'), id: 3, zip: [ 99999, 11111 ] } ] test> db.tarr.find({"zip": {$gt: 20000}}) db.tarr.find({"zip": {$gt: 20000}}) [ { _id: ObjectId('68a409b81f487b865189b045'), id: 2, zip: [ 12345, 54321 ] }, { _id: ObjectId('68a409b81f487b865189b046'), id: 3, zip: [ 99999, 11111 ] } ] test> db.tarr.find({"zip": {$lt: 20000}}) db.tarr.find({"zip": {$lt: 20000}}) [ { _id: ObjectId('68a409b81f487b865189b044'), id: 1, zip: 11111 }, { _id: ObjectId('68a409b81f487b865189b045'), id: 2, zip: [ 12345, 54321 ] }, { _id: ObjectId('68a409b81f487b865189b046'), id: 3, zip: [ 99999, 11111 ] } ] mysql> create table t1 (c json); Query OK, 0 rows affected (0.136 sec) mysql> insert into t1 values ('{"id": 1, "zip": 11111}'); Query OK, 1 row affected (0.024 sec) mysql> insert into t1 values ('{"id": 2, "zip": [12345, 54321]}'); Query OK, 1 row affected (0.029 sec) mysql> insert into t1 values ('{"id": 3, "zip": [99999, 11111]}'); Query OK, 1 row affected (0.031 sec) mysql> insert into t1 values ('{"id": 3, "zip": ["99999", "11111"]}'); Query OK, 1 row affected (0.028 sec) mysql> CREATE INDEX zips ON t1 ( (CAST(c->'$.zip' AS UNSIGNED ARRAY)) ); Query OK, 0 rows affected (0.191 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> select * from t1 where 11111 member of(c->'$.zip'); +--------------------------------------+ | c | +--------------------------------------+ | {"id": 1, "zip": 11111} | | {"id": 3, "zip": [99999, 11111]} | | {"id": 3, "zip": ["99999", "11111"]} | +--------------------------------------+ 3 rows in set (0.014 sec) mysql> select * from t1 where "11111" member of(c->'$.zip'); +--------------------------------------+ | c | +--------------------------------------+ | {"id": 3, "zip": ["99999", "11111"]} | +--------------------------------------+ 1 row in set (0.004 sec) mysql> select * from t1 where 22222 > (c->'$.zip'); +-------------------------+ | c | +-------------------------+ | {"id": 1, "zip": 11111} | +-------------------------+ 1 row in set (0.003 sec) mysql> select * from t1 where 11111 = (c->'$.zip'); +-------------------------+ | c | +-------------------------+ | {"id": 1, "zip": 11111} | +-------------------------+ 1 row in set (0.004 sec) mysql> insert into t1 values ('{"id": 4, "zip": [12345, 54321], "zip2": [12345, 54321]}'); Query OK, 1 row affected (0.024 sec) mysql> CREATE INDEX zips2 ON t1 ( (CAST(c->'$.zip' AS UNSIGNED ARRAY)), (CAST(c->'$.zip2' AS UNSIGNED ARRAY)) ); ERROR 1235 (42000): This version of MySQL doesn't yet support 'more than one multi-valued key part per index'