diff --git a/packages/core/src/__tests__/memdb.test.ts b/packages/core/src/__tests__/memdb.test.ts index ccdab87043..f518944c6e 100644 --- a/packages/core/src/__tests__/memdb.test.ts +++ b/packages/core/src/__tests__/memdb.test.ts @@ -430,5 +430,18 @@ describe('memdb', () => { expect(mergeQueries({ age: { $lt: 20 } } as any, { age: { $gt: 25 } } as any)).toEqual({ age: { $gt: 25 } }) expect(mergeQueries({ age: { $gt: 25 } } as any, { age: { $lt: 20 } } as any)).toEqual({ age: { $lt: 20 } }) + + const query4 = { + space: { $in: [id1] } + } as any + const query5 = { + space: { $in: [id2, id1] } + } as any + const resQuery45 = { + space: id1 + } as any + + expect(mergeQueries(query4, query5)).toEqual(resQuery45) + expect(mergeQueries(query5, query4)).toEqual(resQuery45) }) }) diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index c419a48972..56fe59acc4 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -378,7 +378,7 @@ function getInNiN (query1: any, query2: any): Object { aIn.length - bIn.length < 0 ? bIn.filter((c: any) => aIn.includes(c)) : aIn.filter((c: any) => bIn.includes(c)) const finalNin = Array.from(new Set([...aNIn, ...bNIn])) if (finalIn.length === 1 && finalNin.length === 0) { - return aIn[0] + return finalIn[0] } if (finalIn.length === 0 && finalNin.length === 1) { return { $ne: finalNin[0] }