sql >> Databáze >  >> NoSQL >> MongoDB

Použití $graphLookup k procházení vnořené datové struktury v MongoDB

Nevím, jestli na to stále hledáte odpověď, ale pokud používáte mongoose, můžete využít vyplňte funkci a použijte ji jako middleware

Zde je příklad:Řekněme, že chci seznam lidí a jejich přátel a jejich přátel-přátel atd. Výsledek by měl vypadat takto:

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

V db jsou uloženy takto

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

Vaše schéma a middleware by byly:

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

Přidání funkce jako middlewaru k find bude fungovat pro každého nalezeného člověka. To zahrnuje děti v friends pole.




  1. Jak nainstalovat MongoDB

  2. MongoDB:V cestě bylo nalezeno příliš mnoho pozičních (tj. '$') prvků

  3. MongoDB InvalidDocument:Nelze kódovat objekt

  4. Mongoose aktualizuje mnoho s různými hodnotami podle jedinečného ID, jako je e-mail bez smyčky