Есть коллекция(с текстовым индексом) примерно такого вида:
[{id: 1, "items" : [ "milk", "bread", "fish" ]},
{id: 2, "items" : [ "milk", "milk", "milk" ]},
{id: 3, "items" : [ "cheese", "salt" ]},
{id: 4, "items" : [ "fish", "bread"]}]
Нужно найти все документы, в которых в массиве items есть хотя бы один элемент, содержащий слова "milk", "bread" и "fish". И отсортировать результат, но не по общему количеству вхождений
любых искомых слов(как делает код ниже), а по количеству
одновременных вхождений искомых слов.
coll.find({$text:{"$search": "milk bread fish"}}, {score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}})
Этот код сортирует результат следующим образом:
[{id: 2, "items" : [ "milk", "milk", "milk" ], "score": 3.3},
{id: 1, "items" : [ "milk", "bread", "fish" ], "score": 3.3},
{id: 4, "items" : [ "fish", "bread"], "score": 2.2}]
А мне нужно:
[{id: 1, "items" : [ "milk", "bread", "fish" ], "score" : 3},
{id: 4, "items" : [ "fish", "bread"], "score": 2},
{id: 2, "items" : [ "milk", "milk", "milk" ], "score": 1}]