MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Używanie $graphLookup do przechodzenia przez zagnieżdżoną strukturę danych w MongoDB

Nie wiem, czy nadal szukasz odpowiedzi na to pytanie, ale jeśli używasz mangusty, możesz skorzystać z wypełnij funkcję i użyj jej jako oprogramowania pośredniego

Oto przykład:Powiedzmy, że chcę listę osób i ich przyjaciół, ich przyjaciół-przyjaciół itp. Wynik powinien wyglądać tak:

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

W bazie są przechowywane w ten sposób

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

Twój schemat i oprogramowanie pośredniczące to:

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

Dodanie funkcji jako oprogramowania pośredniego do find sprawi, że będzie działać dla każdej znalezionej osoby. Obejmuje to dzieci w grupie friends tablica.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy można otrzymywać powiadomienia o zmniejszeniu postępu mapy w mongo?

  2. Kartezjański produkt C# Mongodb dokumentów z wieloma tablicami obiektów

  3. Metody „statyczne” mangusty a metody „instancyjne”

  4. Wewnętrzny błąd serwera podczas migracji Parse do Heroku/AWS

  5. MongoDB różnica między $orderby i Sort