sql >> Databasteknik >  >> NoSQL >> MongoDB

Använda $graphLookup för att gå igenom en kapslad datastruktur i MongoDB

Jag vet inte om du fortfarande letar efter svaret på detta, men om du använder mongoose kan du dra nytta av fyllningsfunktionen och använd den som mellanprogram

Här är ett exempel:Låt oss säga att jag vill ha en lista över personer och deras vänner, och deras vänner-vänner, etc. Resultatet bör se ut så här:

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

I db:n lagras de så här

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

Ditt schema och mellanprogram skulle vara:

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

Lägger till funktionen som mellanprogram för att find kommer att få den att köras för varje person som hittas. Det inkluderar barnen i friends array.




  1. Mongo grupp efter månad med UNIX millisekundstid

  2. Hur kan jag importera data till Mongodb från Json-fil med java

  3. MongoDB vs. Redis vs. Cassandra för en snabbskrivande, temporär radlagringslösning

  4. mongo db update ändrar ordningen på objektfälten