apache / apache/pouchdb

`pouchdb-find` Mango Query with with `$and` and nested `$or` with partially matching `$elemMatch` tree misses a case.

Open
#9,065 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
17.6k
Forks
1.5k
PR merge metrics
No merged PRs in 30d

Description

PouchDB: v9.0.0
PouchDB-find: v9.0.0

Mango Query with with `$and` and nested `$or` with partially matching tree misses a case.

query given to find:
```
{ selector: {
$and: [{
$or: [
{ title: { $eq: "IBM" } },
{ releases: { $elemMatch: { localTitle: { $elemMatch: { $eq: "IBM" } } } } }
] }, {
$or: [
{ madeIn: { $eq: "US" } },
{ releases: { $elemMatch: { madeFor: { $eq: "US" } } } }
]}
}}
```

results into:
```
{ selector: {
$or: [{
{ title: { $eq: "IBM" } },
{ madeIn: { $eq: "US" } },
}, {
{ title: { $eq: "IBM" } },
{ releases: { $elemMatch: { madeFor: { $eq: "US" } } } }
}, {
{ releases: { $elemMatch: { localTitle: { $elemMatch: { $eq: "IBM" } } } } },
{ madeIn: { $eq: "US" } }
}],
}}
```

expected (if modified at all):
```
{ selector: {
$or: [{
{ title: { $eq: "IBM" } },
{ madeIn: { $eq: "US" } },
}, {
{ title: { $eq: "IBM" } },
{ releases: { $elemMatch: { madeFor: { $eq: "US" } } } }
}, {
{ releases: { $elemMatch: { localTitle: { $elemMatch: { $eq: "IBM" } } } } },
{ madeIn: { $eq: "US" } }
}, {
{ releases: { $elemMatch: { localTitle: { $elemMatch: { $eq: "IBM" } } } } },
{ releases: { $elemMatch: { madeFor: { $eq: "US" } } } }
}],
}}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.