sql >> Database >  >> NoSQL >> MongoDB

$graphLookup gebruiken om een ​​geneste gegevensstructuur in MongoDB te doorkruisen

Ik weet niet of je hier nog steeds naar op zoek bent, maar als je mangoest gebruikt, kun je profiteren van de functie invullen en gebruiken als middleware

Hier is een voorbeeld:laten we zeggen dat ik een lijst wil van mensen en hun vrienden, en hun vrienden-vrienden, enz. Het resultaat zou er als volgt uit moeten zien:

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

In de db worden ze zo opgeslagen

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

Uw schema en middleware zouden zijn:

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

De functie als middleware toevoegen aan find zal ervoor zorgen dat het voor elke gevonden persoon wordt uitgevoerd. Dat omvat de kinderen in de friends array.




  1. Verwijderen door _id in MongoDB-console

  2. MongoDB:Is het mogelijk om de resultaten van $lookup te beperken tot bepaalde velden (als een projectie)?

  3. Python &Redis:best practices voor Manager/Worker-applicaties

  4. Mongodb-updatebewerking binnen subarray