Query recursive model with discriminator not working with string ref id filter #14664
Closed
2 tasks done
Labels
help
This issue can likely be resolved in GitHub issues. No bug fixes, features, or docs necessary
Prerequisites
Mongoose version
8.4.1
Node.js version
20.10.0
MongoDB server version
6.0.2
Typescript version (if applicable)
5.4.5
Description
Reproduction link: https://stackblitz.com/edit/stackblitz-starters-ypt8r8?file=src%2Findex.ts
I have a model named “Node” with two discriminators, “ParentNode” and “ChildNode” respectively. The ChildNode subclass has a “parentNode” property of type ObjectId, which refers to the “ParentNode” subclass. I noticed that when querying the Node model by the “parentNode” field using a string id, the query does not work. However, it works when using the ObjectId. In MongoDB, this use case is correct. But in Mongoose, when querying a model by an ObjectId property using only a string value, the query works just as well. Therefore, I expect the same behavior for subModels.
The
![image](https://private-user-images.githubusercontent.com/71180446/338913519-a1a0a185-4269-4d47-b15a-171750323590.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMzcyNTksIm5iZiI6MTczOTEzNjk1OSwicGF0aCI6Ii83MTE4MDQ0Ni8zMzg5MTM1MTktYTFhMGExODUtNDI2OS00ZDQ3LWIxNWEtMTcxNzUwMzIzNTkwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDIxMzU1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ1YjY2NTliMTQyM2JjNmFhOGJhNmFhYjBlYTViYTFmYWQyYmU5MzY1MjIwODk3ZWQ5YjQwZGVhZTU2ODYyODMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.tJMXOeBVjtO8VZ3KCjYZNyA5Yvc1TUXXYyonsBt35PE)
nodeQueryResult1
does not work, whilenodeQueryResult2
doesBoth
![image](https://private-user-images.githubusercontent.com/71180446/338913311-17a4e5bc-4e47-4459-966e-e4a8438ad9cd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMzcyNTksIm5iZiI6MTczOTEzNjk1OSwicGF0aCI6Ii83MTE4MDQ0Ni8zMzg5MTMzMTEtMTdhNGU1YmMtNGU0Ny00NDU5LTk2NmUtZTRhODQzOGFkOWNkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDIxMzU1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFkZTVjZGYwMzA2NzlhOTAzMGE2MGZkZjU5OGRhNTUxNzgzMDdjZjI0NDAwMjNiZmQ3MDczYzUxYWU3NmEzM2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.nYC7iVzTU9UYjOKQkIdCM4xhOexqekGQVPIYR1ojJf4)
projectQueryResult1
andprojectQueryResult2
work as expected.Please note that the
![Screenshot 2024-06-12 at 11 45 47](https://private-user-images.githubusercontent.com/71180446/338916112-16e04232-0910-48ce-9e5c-328ae22cd565.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMzcyNTksIm5iZiI6MTczOTEzNjk1OSwicGF0aCI6Ii83MTE4MDQ0Ni8zMzg5MTYxMTItMTZlMDQyMzItMDkxMC00OGNlLTllNWMtMzI4YWUyMmNkNTY1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDIxMzU1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVkZjMwN2U2ODZlNmM0MWJkNzNjNjNmYjc2OWRkYWVkNWJjZTQwZjZmMTcxMDRlOWE3ZjgxNTllMDRmNDE4MDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.52tWLW8NdHcouOIEfea98qKhDtJTh4nF9bbVL6-IEcc)
nodeQueryResult1
query does not work when passing an id of string type, while theprojectQueryResult
query works with both a string type id and an ObjectId type id.Steps to Reproduce
Clone the repository locally, compile the TypeScript code and run the command:
Expected Behavior
I expect that if I can query any model by a reference property of type ObjectId using a string value, I should also be able to query a subclass in the same manner.
The text was updated successfully, but these errors were encountered: