Pracuję z zestawem danych złożonym z probabilistycznych, zaszyfrowanych elementów, których nie można odróżnić od losowych próbek. W ten sposób sekwencyjne szyfrowanie tego samego numeru skutkuje różnymi szyfrogramami. Jednak są one nadal porównywalne dzięki specjalnej funkcji, która stosuje algorytmy takie jak SHA256 w celu porównania dwóch szyfrogramów.Niestandardowy komparator indeksu w MongoDB
Chcę dodać listę opisanych zaszyfrowanych tekstów do bazy danych MongoDB i zaindeksować ją za pomocą struktury opartej na drzewach (tj .: AVL). Nie mogę po prostu zastosować domyślnego indeksowania bazy danych, ponieważ, jak opisano, rekordy muszą być porównywalne za pomocą specjalnej funkcji.
Przykład: Załóżmy, że mam bazę db oraz kolekcję c złożoną przez następujący Rodzaj dokumentu:
{
"_id":ObjectId,
"r":string
}
Ponadto niech F (int, string, string) jest następująca funkcja :
F(h,l,r) = (SHA256(l | r) + h) % 3
gdzie operator | jest standardową funkcją łączenia.
że chce wykonać następujące zapytanie w sposób efektywny, takich jak zbiór z jakiegoś odpowiedniego indeksowania:
db.c.find({ F(h,l,r) :{ $eq: 0 } })
H i L wybrany dowolnie, lecz nie stałe. I.e .: Załóżmy, że chcę znaleźć wszystkie rekordy, które spełniają F (h1, l1, r), dla niektórych par (h1, l1). Później, w innym momencie, chcę zrobić to samo, ale używając (h2, l2) takich, że h1! = H2 i l1! = L2. h i l mogą przyjmować dowolną wartość w zbiorze liczb całkowitych.
Jak mogę to zrobić?
świetne pytanie!Czy możesz dodać przykład kodu, aby było bardziej zrozumiałe? – Shawyeok
Wykonano Shawieok. Sprawdź to. –