`pouchdb-find` Mango Query with with `$and` and nested `$or` with partially matching `$elemMatch` tree misses a case.
- 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
Assessment
This issue has not been assessed yet.