-1

Problème lors de l'interrogation du document incorporé dans mongo db. J'essaie d'obtenir le conversationId pour les utilisateurs mais il retourne null.Impossible d'obtenir le résultat agrégé dans le document incorporé mongo en interrogeant

Exemple de document:

{ 
"_id" : ObjectId("5787391f191fda3a4430c749"), 
"conversationId" : "fWFGIr0xAbQytmVcQIPV", 
"user" : [{_id : "800", "name" : "Tim"},{_id : "500", "name" : "Kingsley"}, 
{_id : "400", "name" : "Roger"}], 
"type" : "PRIVATE" 
} 

Requête:

Aggregation agg = newAggregation(
      match(Criteria.where("type").is("PRIVATE")), 
      group("conversationId").push("user.id").as("users"), 
      match(Criteria.where("users").all(Arrays.asList('800','400','500'))) 
      ); 
    AggregationResults<Rooms> groupResults = mongoOps.aggregate(agg, ROOMS, Rooms.class); 
     List<Rooms> result = groupResults.getMappedResults(); 
     result.get(0).getId() // returns null 

Le result.get(0).getId() est de retour nul, selon ma requête, je me attends à l'identifiant de conversation qui est présent pour les utilisateurs.

+0

Quel genre de résultat que vous attendez? – chridam

+0

@chridam: Je m'attends à la conversationId, mais je reçois null. – Karthik

Répondre

1

Je ne suis pas sûr, pourquoi vous regroupez sur conversationId et ensuite en créant un ensemble avec l'ID de l'utilisateur qui a pris part à cette conversation.

Si votre résultat souhaité est de trouver une conversation dans laquelle les utilisateurs '800', '400' et '500', alors vous pouvez immédiatement utiliser la recherche de trouver avec $ tout.

mongo Query ressemblera à ceci:

db.test.find({"user._id":{"$all":["800","500","400"]}}) 
+0

Oui, mon résultat souhaité est comme ça seulement. Mais, il ne trouve pas la conversation souhaitée Id – Karthik

+0

@Karthik: Vous avez essayé avec la requête ci-dessus? pouvez-vous coller ce code java? – Nattyk

+0

Agrégation agg = newAggregation ( match (Criteria.where ("type"). Est ("PRIVATE")), group ("conversationId"). Push ("user.id"). As ("users"), match (Criteria.where ("users") .all (userProfileIds)) – Karthik