MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwenden von $graphLookup zum Durchlaufen einer verschachtelten Datenstruktur in MongoDB

Ich weiß nicht, ob Sie immer noch nach der Antwort darauf suchen, aber wenn Sie Mongoose verwenden, können Sie den Funktion füllen und als Middleware verwenden

Hier ist ein Beispiel:Sagen wir, ich möchte eine Liste mit Leuten und ihren Freunden, ihren Freunden-Freunden usw. Das Ergebnis sollte so aussehen:

[
    {
        _id: "abc123",
        name: "John Doe",
        friends: [
            {
                _id: "efg456",
                name: "Foo bar",
                friends: [
                    {
                        _id: "hij789",
                        name: "Jane Doe",
                        friends: [more friends...]
                    }
                ]
            }
        ]
]

In der DB werden sie so gespeichert

{_id: "abc123", name: "John Doe", friends: ["efg456"]}
{_id: "efg456", name: "Foo bar", friends: ["hij789"]}
{_id: "hij789", name: "Jane Doe", friends: [more friends...]}

Ihr Schema und Ihre Middleware wären:

const Person = new Schema<Folder>({
    name: {type: String, required: true},
    friends: [{type: Schema.Types.ObjectId, ref: "person"}],
}, {timestamps: true})

Person.pre("find", function(next) {
    this.populate("friends")
    next()
})

Hinzufügen der Funktion als Middleware zu find wird es für jede gefundene Person laufen lassen. Das schließt die Kinder in den friends ein Array.