Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Оператор $mod
запроса используется для фильтрации документов на основе оставшейся части операции деления. Этот оператор позволяет запрашивать запросы, включающие математические условия, например поиск значений, делимых по числу или с определенным остатком. Она поддерживается в Azure Cosmos DB для MongoDB (vCore).
Синтаксис
{
<field>: { $mod: [ <divisor>, <remainder> ] }
}
-
<field>
: поле, в котором выполняется операция модуля. -
<divisor>
: число, по которому необходимо разделить значение поля. -
<remainder>
: Ожидаемый оставшийся после деления.
Пример
Пример 1. Поиск документов, в которых sales
значение делится на 3
db.collection.find({ "sales": { "$mod": [3, 0] } })
В этом примере извлекаются все документы, в которых sales
значение поля делится на 3 (то есть остаток равен 0). При этом будут выведены следующие выходные данные:
[
{ "_id": 1, "sales": 9, "product": "A" },
{ "_id": 2, "sales": 15, "product": "B" },
{ "_id": 3, "sales": 21, "product": "C" }
]
Пример 2. Поиск документов, в которых totalSales
значение имеет оставшуюся часть 2 при делении на 5
db.collection.find({ "totalSales": { "$mod": [5, 2] } })
Этот запрос фильтрует документы, в которых totalSales
поле имеет оставшуюся часть 2 при делении на 5. При этом будут выведены следующие выходные данные:
[
{ "_id": 4, "totalSales": 7, "product": "X" },
{ "_id": 5, "totalSales": 12, "product": "Y" },
{ "_id": 6, "totalSales": 17, "product": "Z" }
]
Пример 3. Запрос вложенных полей с помощью $mod
db.collection.find({ "sales.monthly.total": { "$mod": [4, 1] } })
В этом примере демонстрируется запрос вложенного поля (sales.monthly.total
) с $mod
помощью оператора. При этом будут выведены следующие выходные данные:
[
{ "_id": 7, "sales": { "monthly": { "total": 5 } }, "category": "Electronics" },
{ "_id": 8, "sales": { "monthly": { "total": 9 } }, "category": "Clothing" }
]
Соображения
- Если в массиве для оператора $mod задано меньше двух значений, то на сервере возникает ошибка, указывающая, что недостаточно аргументов было передано.
- Если в массиве для оператора $mod задано более двух значений, то на сервере возникает ошибка, указывающая, что было передано слишком много аргументов.
Ограничения
- Оператор
$mod
применяется только к числовым полям. Использование его в нечисловых полях приводит к ошибке. - Убедитесь, что делитель не равен нулю, так как приводит к недопустимой операции.
Связанный контент
- Ознакомьтесь с вариантами миграции из MongoDB в Azure Cosmos DB для MongoDB (vCore)
- Дополнительные сведения о совместимости компонентов с MongoDB