2013-02-25 1 views
1

j'ai 2 entités suivantes:Interroger une collection avec DBRef

@Document 
public class Freelancer { 
@Id 
String id; 
String name; 
@DbRef 
List<Project> bidProjects; 
} 

@Document 
public class Project { 
@Id 
String id; 
String name; 
} 

projet ne peut pas avoir l'arbitre pour Freelancer comme il pourrait y avoir de nombreux pigistes qui peuvent soumissionner les projets. Je veux faire ce qui suit:

Trouvez le pigiste qui a placé une enchère sur le projet avec le nom = "XYZ".

Quelle devrait être la requête (requête basée JSON) pour cela, j'ai essayé suivante (d'autres combinaisons, mais rien ne fonctionne):

@Query("{ 'completedProject': {'$ref': 'project', 'name': ?0 } }") 
@Query("{ 'completedProjects': {'$ref': 'project', 'name': ?0 } }") 
@Query("{ 'completedProject': [{'$ref': 'project', 'name': ?0 }] }") 

Répondre

1

{ 'fieldName': {'$ref': 'collectionName', '$field': { '$ofield' : ?0 } } }

il serait donc

@Query("{ 'bidProjects': {'$ref': 'project', '$name': { '$oname' : ?0 } } }")

+0

Je l'ai essayé et ça n'a jamais marché pour moi. Qu'est-ce que "$ ofield" représente, est-ce le nom du champ, nous le fournissons déjà. –