Подсчет количества запросов удовлетворенных $ или в MongoDB - PullRequest
0 голосов
/ 03 ноября 2018

Есть ли способ найти все документы в коллекции и отсортировать их по количеству запросов , которым они соответствуют?

т.е. документы, соответствующие 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
}]

Мэтт первый, поскольку он удовлетворил оба запроса.

...