sql >> Database teknologi >  >> NoSQL >> MongoDB

Brug af $graphLookup til at krydse en indlejret datastruktur i MongoDB

Jeg ved ikke, om du stadig leder efter svaret på dette, men hvis du bruger mongoose, kan du drage fordel af udfyldningsfunktionen og brug den som middleware

Her er et eksempel:Lad os sige, at jeg vil have en liste over personer og deres venner, og deres venner-venner osv. Resultatet skulle se sådan ud:

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

I db'en er de gemt sådan

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

Dit skema og din middleware ville være:

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()
})

Tilføjelse af funktionen som en middleware til find vil få det til at køre for hver person fundet. Det inkluderer børnene i friends array.




  1. JavaScript-designmønstre -- Håndtering af uønsket asynkroni

  2. hvordan man henter 10 minutter før oprettede poster i mongodb

  3. Tips til opgradering af Percona Server til MongoDB

  4. Hvordan ville jeg i Meteor.js få to udviklingsprojekter til at bruge den samme Mongo-instans?