Есть ли способ найти все документы в коллекции и отсортировать их по количеству запросов , которым они соответствуют?
т.е. документы, соответствующие 10 запросам вверху, документы, соответствующие 1 внизу
Я пытался реализовать это через конвейер агрегации, но я застрял.
Например, скажем, я хотел найти пользователей в возрасте от 18 до 24 лет, а также проверить наличие строки с помощью регулярного выражения:
db.users. aggregate({
"$match": {
'$or': [
{
"name": /.*m.*/
},
{
'age': {
'$gt': 18,
'$lt': 24
}
}
]
}
...
Я не уверен, куда идти дальше, хотя
Любая помощь будет высоко ценится
Edit:
Вот пример коллекции:
users = [{
'name': 'bob',
'age': 19
},
{
'name': 'susan',
'age': 16
},
{
'name': 'mark',
'age': 25
},
{
'name': 'matt',
'age': 19
}]
Пример вывода после проверки запроса 1: regex /.*m.*/
, запроса 2: 18 < age < 24
:
[{
'name': 'matt',
'age': 19,
'matched': 2
},
{
'name': 'bob',
'age': 19,
'matched': 1
},
{
'name': 'mark',
'age': 25,
'matched': 1
}]
Мэтт первый, поскольку он удовлетворил оба запроса.