2017-10-12 2 views
1

Ich habe ein Mungo-Schema, das einen Benutzer in einem sozialen Netzwerk modelliert. Darin möchte ich ein Array aller Chats speichern, die ein Benutzer hat, ein Chat besteht aus einem Responder (der Benutzer, mit dem ein Benutzer chattet), und ein Array, das die Konversation darstellt.Verschachtelte Mongodb-Abfrage

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

Wie finde ich einen Artikel in Chats, die eine perticular Befragten enthält? In dem gefundenen Element möchte ID eine Nachricht an die Konversation senden.

Antwort

1

Sie haben keinen Schlüssel für den inneren Chat erwähnt. Geben Sie wie folgt aus:

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

Abfrage für Dokumentenlösung ist das Hinzufügen:

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

Abfrage für Dokument auf innere Abfrage

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

Dank der Suche ich vergaß den Schlüssel zu setzen, mein Problem ist, dass Ich muss den innerChat (oder Konversation, wie ich es nannte) mit dem Befragten finden. –

+0

Sie erwähnen, dass Sie Elemente in der inneren chat.please aktualisieren möchten Sie Frage – Sam

+0

gut, um fair zu sein, sagte ich "mit einem Befragten, wie schiebe ich Elemente in den inneren Chat", aber ich sehe, wo kommst du aus, Frage aktualisiert –

Verwandte Themen