query based on matching elements in DBRef list for mongodb using spring-data-mongodb
12,938
Solution 1
Querying for one element on an array is exactly like query for a field equality. You could read the MongoDB documentation here. So your query will be:
new Query(Criteria.where("users.$id").is(new ObjectId(userId)))
Solution 2
in repository interface type this query on the method:
@Query("{'company' :{'$ref' : 'company' , '$id' : ?0}}")
Company find(String companyId);
Related videos on Youtube
Author by
shailesh
Updated on June 04, 2022Comments
-
shailesh almost 2 years
I am pretty new to mongodb. I am using spring-data-mongodb for my queries from java. Please guide me if this is achievable.
Say I have two objects "Car" and "User" as following, where car has list of users,
Class Car { @Id String id; String model; @DBRef List<User> users; @DBRef Company company; } Class User { @Id String id; String name; }
I want to find all cars for a user, (find all cars where car.users has given user)
Is it possible to achieve using spring-data-mongodb?
It's pretty easy if there was only one DBRef element, eg, for company I can write a query like this,
new Query(Criteria.where("company.$id").is(new ObjectId(companyId)))
But, how to achieve this if there is a list of elements referenced as DBRef??
Thanks for help.
-
Saakshi Aggarwal almost 8 yearsIf we need to search based on companyId and carId both together
-
Sachin over 6 yearsHi @Miguel, What if i want to search using user's name instead of user id in single query
-
Hafiz over 6 yearsbeen looking for the answer for days now @Sachin. did you find it by any chance? everyone seems to refer to Id,
-
Amir Choubani about 6 years@Miguel how to use this with rest api. should I add a new customRepository and use mongoOperation ?