Создание агрегирующего запроса для запуска автозавершения

Я пытаюсь сделать запрос к базе данных MongoDB с помощью Django с агрегатом, чтобы иметь возможность спровоцировать автозавершение.

class SearchResultsView(ListView):
    model = Perfume
    template_name = 'todo/search_similar_results.html'

    def get_queryset(self):  # new
        query = self.request.GET.get('q')
        print("JE SUIS PASSE PAR LA")
        # object_list = list(collection.find({"q0.Results.0.Name": {"$regex": str(query), "$options": "i"}}))
        object_list = list(collection.aggregate([
            {
                "$search":{
                    "autocomplete":{
                        "query": str(query),
                        "path": "name",
                        "fuzzy":{
                              "maxEdits":2,
                        }
                     }
                 }
            }]  
            print('type(object_list): ', type(object_list))
            return object_list

Но я ничего не получаю назад:

[11/Mar/2021 14:36:07] "GET /similar/static/vendor/bootstrap/js/bootstrap.min.js HTTP/1.1" 404 3938
JE SUIS PASSE PAR LA
[]

Я также попробовал это на этапе создания пайплайна агрегации в MongoDB Atlas, но не знаю, как это сделать:

/** 
 * index: the name of the Search index.
 * text: Analyzed search, with required fields of query and path, the analyzed field(s) to search.
 * term: Un-analyzed search.
 * compound: Combines ops.
 * span: Find in text field regions.
 * exists: Test for presence of a field.
 * near: Find near number or date.
 * range: Find in numeric or date range.
 */
{
  index: 'test', # название моего индекса
  text: {
    query: 'atelier', # пример. У меня есть документ, в котором указано название этого ателье.
    path: 'name' # название поля, которое я хочу проиндексировать
  }
}

Обновление

Я снова попробовал на очень простом примере:

$(document).ready(function(){

    var perfumes = ["dior","pacco","moschino"];
    
    $("#autocomplete").autocomplete({source: perfumes, minLength: 0}).focus(function(){
        /* Muestra todas las opciones al enfocar el input */
        $(this).autocomplete('search', $(this).val())
    });

});
<!-- jQuery-UI CSS -->
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/cupertino/jquery-ui.css"/>


<form class="form" action="#" method="get" autocomplete="off">
    <input id="autocomplete" type="text" placeholder="Perfume name...">
    <input id="perfumename" type="submit" value="Find Similar Perfumes"/>
</form>


<!-- jQuery-Min JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>

<!-- jQuery-UI JS -->
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin="anonymous"></script>

Работает. Я не могу этого сделать, когда пытаюсь из базы данных MongoDB:

$(document).ready(function () {
  const datos = await fetch(`http://localhost:8000/similar/similar_results/?query=${request.term}`);
  const filtrar = (w) => {
    return datos

  }
  // handle click and add class
  $("#autocomplete").autocomplete({
    source: async function(request, response) {
        let data = filtrar().map(result => {
                return { label: result.name, value: result.name, id: result._id };
            });
        response(data);
    },
    minLength:2,
    select: function(event, ui){
      console.log(ui.item);
    }
  });
})

Не работает.


Ответы (0 шт):