2017-10-12 3 views
1

J'ai un schéma de mangouste qui modélise un utilisateur dans un réseau social. Dans ce je veux enregistrer un tableau de toutes les conversations qu'un utilisateur a, une conversation se compose d'un représentant (l'utilisateur avec lequel un utilisateur discute), et un tableau qui représente la conversation.Requête mongodb imbriquée

var userSchema = mongoose.Schema({ 
    email  : String, 
    chats   : [{ respondent : String, conversation : [{ message: String, author : String}]}], 
}); 

Comment puis-je trouver un élément dans les chats contenant un répondant perticular? Dans l'article trouvé, je voudrais pousser un message à la conversation.

Répondre

1

Vous n'avez mentionné aucune clé pour le chat interne. Indiquez comme ceci:

var userSchema = mongoose.Schema({ 
     email  : String, 
     chats   : [ 
     { respondent : String, 
      innerChat:[{ message: String, author : String}]} 
     ], 
    }); 

requête pour ajouter une solution de document est:

var document={ 
email:"[email protected]", 
chats:[{respondent:"UserName",innerChat:[{message:"hello",author:"authorName"}]}] 
} 
db.collection.insert(document); 

requête pour trouver le document sur la requête interne

db.collection.find({"chats.innerChat.author":"authorName"}); 
+0

Merci j'ai oublié de mettre la clé, mon problème est que J'ai besoin de trouver le innerChat (ou la conversation comme je l'ai appelé) en utilisant le répondant. –

+0

vous mentionnez que vous voulez pousser des éléments dans le chat intérieur.please mettre à jour vous question – Sam

+0

bien, pour être juste je l'ai dit "En utilisant un répondant, comment puis-je pousser des éléments à la conversation intérieure" mais je vois d'où vous venez, question mise à jour. –