@@ -2999,4 +2999,307 @@ select v from test_jsquery where v @@ parse_mquery('{ { $text: { $search: "Flew"
29992999---
30003000(0 rows)
30013001
3002+ select '{ "a" : "ssl" }'::jsonb @@ parse_mquery('{ a: { $in: [ "ssl","security"] } }');
3003+ ?column?
3004+ ----------
3005+ t
3006+ (1 row)
3007+
3008+ select '{ "a" : 1 }'::jsonb @@ parse_mquery('{ a: { $in: [ "ssl","security"] } }');
3009+ ?column?
3010+ ----------
3011+ f
3012+ (1 row)
3013+
3014+ select '{ "a" : "ssl" }'::jsonb @@ parse_mquery('{ a: { $nin: [ "ssl","security"] } }');
3015+ ?column?
3016+ ----------
3017+ f
3018+ (1 row)
3019+
3020+ select '{ "a" : "sslqwerty" }'::jsonb @@ parse_mquery('{ a: { $nin: [ "ssl","security"] } }');
3021+ ?column?
3022+ ----------
3023+ t
3024+ (1 row)
3025+
3026+ select '{ "a" : [ "ssl","security"] }'::jsonb @@ parse_mquery('{ a: { $size: 2 } }');
3027+ ?column?
3028+ ----------
3029+ t
3030+ (1 row)
3031+
3032+ select '{ "a" : [ "ssl","security"] }'::jsonb @@ parse_mquery('{ a: { $size: 1 } }');
3033+ ?column?
3034+ ----------
3035+ f
3036+ (1 row)
3037+
3038+ select '{ "a" : [ "ssl","security", "pattern"] }'::jsonb @@ parse_mquery('{ a: { $all: [ "ssl","security"] } }');
3039+ ?column?
3040+ ----------
3041+ t
3042+ (1 row)
3043+
3044+ select '{ "a" : [ "ssl","pattern"] }'::jsonb @@ parse_mquery('{ a: { $all: [ "ssl","security"] } }');
3045+ ?column?
3046+ ----------
3047+ f
3048+ (1 row)
3049+
3050+ select '{ "a" : [ "ssl","security"] }'::jsonb @@ parse_mquery('{ a: { $all: [ "ssl","security"] } }');
3051+ ?column?
3052+ ----------
3053+ t
3054+ (1 row)
3055+
3056+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ a : { $exists : false } }');
3057+ ?column?
3058+ ----------
3059+ f
3060+ (1 row)
3061+
3062+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ a : { $exists : true } }');
3063+ ?column?
3064+ ----------
3065+ t
3066+ (1 row)
3067+
3068+ select '{ "b" : 2 }'::jsonb @@ parse_mquery('{ a : { $exists : false } }');
3069+ ?column?
3070+ ----------
3071+ t
3072+ (1 row)
3073+
3074+ select '{ "b" : 2 }'::jsonb @@ parse_mquery('{ a : { $exists : true } }');
3075+ ?column?
3076+ ----------
3077+ f
3078+ (1 row)
3079+
3080+ select '{ "b" : 2 }'::jsonb @@ parse_mquery('{ b: { $type: "int" } }');
3081+ ?column?
3082+ ----------
3083+ t
3084+ (1 row)
3085+
3086+ select '{ "b" : "qwerttyu" }'::jsonb @@ parse_mquery('{ b: { $type: "int" } }');
3087+ ?column?
3088+ ----------
3089+ f
3090+ (1 row)
3091+
3092+ select '{ "b" : 2 }'::jsonb @@ parse_mquery('{ b: { $type: "long" } }');
3093+ ?column?
3094+ ----------
3095+ t
3096+ (1 row)
3097+
3098+ select '{ "b" : "qwerttyu" }'::jsonb @@ parse_mquery('{ b: { $type: "long" } }');
3099+ ?column?
3100+ ----------
3101+ f
3102+ (1 row)
3103+
3104+ select '{ "b" : true }'::jsonb @@ parse_mquery('{ b: { $type: "bool" } }');
3105+ ?column?
3106+ ----------
3107+ t
3108+ (1 row)
3109+
3110+ select '{ "b" : "fklgjlksdfgsldflsgjslkrjekfjkl" }'::jsonb @@ parse_mquery('{ b: { $type: "bool" } }');
3111+ ?column?
3112+ ----------
3113+ f
3114+ (1 row)
3115+
3116+ select '{ "b" : "fklgjlksdfgsldflsgjslkrjekfjkl" }'::jsonb @@ parse_mquery('{ b: { $type: "array" } }');
3117+ ?column?
3118+ ----------
3119+ f
3120+ (1 row)
3121+
3122+ select '{ "b" : [1, 4] }'::jsonb @@ parse_mquery('{ b: { $type: "array" } }');
3123+ ?column?
3124+ ----------
3125+ t
3126+ (1 row)
3127+
3128+ select '{ "b" : "fklgjlksdfgsldflsgjslkrjekfjkl" }'::jsonb @@ parse_mquery('{ b: { $type: "string" } }');
3129+ ?column?
3130+ ----------
3131+ t
3132+ (1 row)
3133+
3134+ select '{ "b" : [1, 4] }'::jsonb @@ parse_mquery('{ b: { $type: "string" } }');
3135+ ?column?
3136+ ----------
3137+ f
3138+ (1 row)
3139+
3140+ select '{ "b" : 2.23432 }'::jsonb @@ parse_mquery('{ b: { $type: "double" } }');
3141+ ?column?
3142+ ----------
3143+ t
3144+ (1 row)
3145+
3146+ select '{ "b" : 2 }'::jsonb @@ parse_mquery('{ b: { $type: "double" } }');
3147+ ?column?
3148+ ----------
3149+ t
3150+ (1 row)
3151+
3152+ select '{ "b" : 2 }'::jsonb @@ parse_mquery('{ b: { $type: "decimal" } }');
3153+ ?column?
3154+ ----------
3155+ t
3156+ (1 row)
3157+
3158+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "maxKey" } }');
3159+ ERROR: Jsquery is not supported MongoDB "maxKey" value type
3160+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "binData" } }');
3161+ ERROR: Jsquery is not supported MongoDB "binData" value type
3162+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "objectId" } }');
3163+ ERROR: Jsquery is not supported MongoDB "objectId" value type
3164+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "javascript" } }');
3165+ ERROR: Jsquery is not supported MongoDB "javascript" value type
3166+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "symbol" } }');
3167+ ERROR: Jsquery is not supported MongoDB "symbol" value type
3168+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "javascriptWithScope" } }');
3169+ ERROR: Jsquery is not supported MongoDB "javascriptWithScope" value type
3170+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "timestamp" } }');
3171+ ERROR: Jsquery is not supported MongoDB "timestamp" value type
3172+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "minKey" } }');
3173+ ERROR: Jsquery is not supported MongoDB "minKey" value type
3174+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "regex" } }');
3175+ ERROR: Jsquery is not supported MongoDB "regex" value type
3176+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "null" } }');
3177+ ERROR: Jsquery is not supported MongoDB "null" value type
3178+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "date" } }');
3179+ ERROR: Jsquery is not supported MongoDB "date" value type
3180+ select '{ "a" : 2 }'::jsonb @@ parse_mquery('{ y: { $type: "undefined" } }');
3181+ ERROR: Jsquery is not supported MongoDB "undefined" value type
3182+ /* Or operator */
3183+ select '{ "quantity" : 2, "price" : 10 }'::jsonb @@ parse_mquery('{ $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] }');
3184+ ?column?
3185+ ----------
3186+ t
3187+ (1 row)
3188+
3189+ select '{ "quantity" : 200, "price" : 10 }'::jsonb @@ parse_mquery('{ $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] }');
3190+ ?column?
3191+ ----------
3192+ t
3193+ (1 row)
3194+
3195+ select '{ "quantity" : 200, "price" : 10 }'::jsonb @@ parse_mquery('{ $or: [ { quantity: { $lt: 20 } }, { price: 100 } ] }');
3196+ ?column?
3197+ ----------
3198+ f
3199+ (1 row)
3200+
3201+ /* Nor operator */
3202+ select '{ "quantity" : 2, "price" : 10 }'::jsonb @@ parse_mquery('{ $nor: [ { quantity: { $lt: 20 } }, { price: 10 } ] }');
3203+ ?column?
3204+ ----------
3205+ f
3206+ (1 row)
3207+
3208+ select '{ "quantity" : 200, "price" : 10 }'::jsonb @@ parse_mquery('{ $nor: [ { quantity: { $lt: 20 } }, { price: 10 } ] }');
3209+ ?column?
3210+ ----------
3211+ t
3212+ (1 row)
3213+
3214+ select '{ "quantity" : 200, "price" : 10 }'::jsonb @@ parse_mquery('{ $nor: [ { quantity: { $lt: 20 } }, { price: 100 } ] }');
3215+ ?column?
3216+ ----------
3217+ t
3218+ (1 row)
3219+
3220+ /* And operator */
3221+ select '{ "quantity" : 200, "price" : 10 }'::jsonb @@ parse_mquery('{ $and: [ { quantity: { $lt: 20 } }, { price: 100 } ] }');
3222+ ?column?
3223+ ----------
3224+ f
3225+ (1 row)
3226+
3227+ select '{ "quantity" : 5, "price" : 100 }'::jsonb @@ parse_mquery('{ $and: [ { quantity: { $lt: 20 } }, { price: 100 } ] }');
3228+ ?column?
3229+ ----------
3230+ t
3231+ (1 row)
3232+
3233+ /* Not operator */
3234+ select '{ "quantity" : 5, "price" : 100 }'::jsonb @@ parse_mquery('{ price: { $not: { $gt: 1.99 } } }');
3235+ ?column?
3236+ ----------
3237+ f
3238+ (1 row)
3239+
3240+ select '{ "quantity" : 5, "price" : 1 }'::jsonb @@ parse_mquery('{ price: { $not: { $gt: 1.99 } } }');
3241+ ?column?
3242+ ----------
3243+ t
3244+ (1 row)
3245+
3246+ /* Mod operator */
3247+ select '{ "quantity" : 2, "price" : 10 }'::jsonb @@ parse_mquery('{ qty: { $mod: [ 4, 0 ] } } ');
3248+ ERROR: MongoDB module operator is not supported by jsquery
3249+ select '{"a": 5}'::jsonb @@ parse_mquery('{ a: { $eq: 5 } }');
3250+ ?column?
3251+ ----------
3252+ t
3253+ (1 row)
3254+
3255+ select '{"a": 5}'::jsonb @@ parse_mquery('{ a: { $eq: 6 } }');
3256+ ?column?
3257+ ----------
3258+ f
3259+ (1 row)
3260+
3261+ select '{ "quantity" : "qw", "price" : 10 }'::jsonb @@ parse_mquery('{ { $where: "qw"} }');
3262+ ERROR: MongoDB where clause is not supported by jsquery
3263+ select '{ "quantity" : "qw", "price" : 10 }'::jsonb @@ parse_mquery('{ { $text: { $search: "qsddjkhjw" } } }');
3264+ ?column?
3265+ ----------
3266+ f
3267+ (1 row)
3268+
3269+ select '{ "quantity" : "qw", "price" : 10 }'::jsonb @@ parse_mquery('{ { $text: { $search: "qw" } } }');
3270+ ?column?
3271+ ----------
3272+ t
3273+ (1 row)
3274+
3275+ select '{"a": { "qwerty" : 5} }'::jsonb @@ parse_mquery('{ "a.qwerty" : { $eq: 6 } }');
3276+ ?column?
3277+ ----------
3278+ f
3279+ (1 row)
3280+
3281+ select '{"a": { "qwerty" : { "asdfgh" : { "fgfhg" : 5 } } } }'::jsonb @@ parse_mquery('{ "a.qwerty.asdfgh.fgfhg" : { $eq: 5 } }');
3282+ ?column?
3283+ ----------
3284+ t
3285+ (1 row)
3286+
3287+ select '{ "_id" : 3, "results" : [ { "product" : "abc", "score" : 7 }, { "product" : "abc", "score" : 8 } ] }' @@ parse_mquery('{ results: { $elemMatch: { product: "abc" } } }');
3288+ ?column?
3289+ ----------
3290+ t
3291+ (1 row)
3292+
3293+ select '{ "_id" : 3, "results" : [ 81, 84, 83] }' @@ parse_mquery('{ results: { $elemMatch: { $gte: 80, $lt: 85 } } }');
3294+ ?column?
3295+ ----------
3296+ t
3297+ (1 row)
3298+
3299+ select '{ "_id" : 3, "results" : [ 81, 86, 83] }' @@ parse_mquery('{ results: { $elemMatch: { $gte: 80, $lt: 85 } } }');
3300+ ?column?
3301+ ----------
3302+ f
3303+ (1 row)
3304+
30023305RESET enable_seqscan;
0 commit comments