Zaimportowałem trochę niepotrzebnych danych XML do bazy danych Mongo. Każdy dokument zawiera zagnieżdżone dokumenty podrzędne na głębokość około 5-10. Chciałbym znaleźć() dokumenty, które mają szczególną wartość konkretnego pola, gdzie pole może pojawić się na dowolnej głębokości w pod-dokumentach (i może pojawić się wiele razy).Jak znaleźć nazwę pola MongoDB na dowolnej głębokości
Obecnie przeciągam każdy dokument do Pythona, a następnie przeszukuję ten słownik, ale byłoby miło, gdybym mógł podać prototyp filtra, w którym baza danych zwróciłaby tylko dokumenty, które mają konkretną wartość nazwy pola, gdzieś w ich zawartości .
Oto przykład dokument:
{
"foo": 1,
"bar": 2,
"find-this": "Yes!",
"stuff": {
"baz": 3,
"gobble": [
"wibble",
"wobble",
{
"all-fall-down": 4,
"find-this": "please find me"
}
],
"plugh": {
"plove": {
"find-this": "Here too!"
}
}
}
}
Tak, chciałbym, aby znaleźć dokumenty, które mają „Find-owego” pola, oraz (jeśli to możliwe), aby móc znaleźć dokumenty, które mają działanie szczególną wartość pola "znajdź-to".
Święty server-side scripting, Batman! Nie miałem pojęcia, że możesz uruchomić JS w bazie danych! To naprawdę fajne, a twoje rozwiązanie ma sens. Dziękuję bardzo! –
Och, wiesz co?Założę się, że możesz zrobić find() z klauzulą "lub" $ where: niech baza znajdzie "key-to-search" i "value-to-search" używając własnych (szybkich) mechanizmów, dla których klucz jest najwyższy poziom i udostępnia funkcję JS rekursywnego wyszukiwania, która będzie używana we wszystkich węzłach, w których "klucz do wyszukiwania" nie znajduje się na najwyższym poziomie. Dodam to do tego pytania, jeśli uda mi się je uruchomić. –