Перейти к основному содержимому
Altcraft Docs LogoAltcraft Docs Logo
Пользователям iconПользователям
Разработчикам iconРазработчикам
Администраторам iconАдминистраторам
Русский
  • Русский
  • English
Войти
    Документация пользователяС чего начатьFAQТермины
      Обновления платформыarrow
    • v2026.1.76v2025.4.75v2025.4.74v2025.3.73v2025.2.72v2025.1.71v2024.4.70v2024.3.69v2024.2.68.2v2024.1.68
      Хранение и сбор данныхarrow
    • Ресурсы подписокРабота с базами данныхПрофиль подписчикаИмпорт профилей клиентов и обновление данныхИмпорт данных по расписаниюАвтоматизация сбора данных о профилеМассовое обновление профилей клиентовDouble opt-in подпискаСтоп-спискиСвязи между профилямиЭкспорт истории профилейЭкспорт профилейАвтоматическое создание статического сегмента при импортеКак открыть CSV-файлМатчингТипы полей в базе данныхГлобальные контрольные группыМенеджер подписок
      Каналы коммуникацииarrow
      • Email-каналarrow
      • Рекомендации по взаимодействию с ISPНастройка собственного from-доменаНастройка и использование постмастеровБыстрый старт
        Push-каналarrow
        • Mobile Pusharrow
        • Настройка и подключение
            Интеграция приложения с Altcraftarrow
          • Провайдеры: структура push сообщенияОбработка и добавление подпискиРегистрация событий
          Web Pusharrow
        • Предварительные настройки
            Настройка для различных браузеровarrow
          • Apple SafariMozilla ServicesFirebase Cloud Messaging
          Подключение Web Push на сайтПередача данных в платформуМетоды Web Push SDK
            Миграция и перенос подписокarrow
          • Перенос push-подписок из стороннего сервисаКак перенести push-подписки, настроенные для SafariМиграция с OneSignal
      SMS-канал
        Создание рассылки с нуляarrow
      • EmailSMSWeb PushMobile PushWhatsAppViber™Руководство: SMS-рассылка через VK NotifyMAX BotMAX GroupNotifyTelegram BotTelegram Group
      Схема работы каналов коммуникацииРуководство: SMS-рассылка через УТШРуководство: push-рассылка через сервис от "Согласие"
      Сегментацияarrow
    • Статические сегментыДинамические сегментыОбновляемые сегменты
        Условия сегментацииarrow
      • Сегментация по данным профиляСегментация по взаимодействиям с сущностямиСегментация по активности в каналах коммуникацииСегментация по внешним даннымСегментация по внешним SQL-таблицамСегментация по структуре профиля
      Лучшее время отправки (BST)Логические операторы "И" и "ИЛИ"Рекомендации по работе с сегментами
      Шаблоны сообщенийarrow
      • Работа с шаблонами сообщенийarrow
      • Работа в редактореEmail-шаблонSMS-шаблонPush-шаблонMAX-шаблонTelegram-шаблонWhatsApp-шаблонViber™-шаблонNotify-шаблон
        Визуальный редактор для email-шаблонаarrow
      • Интерфейс редактораДобавление элементовЭлементы и их настройкиПользовательские блокиСтили элементаСтруктура элементов
      Блочный редактор для email-шаблонаФрагменты шаблоновИзображения в сообщенияхПерсонализация контента в сообщенияхФормирование таблиц на основе элементов массива
        Переменные и функции Altcraftarrow
      • Использование логических выражений в сообщенияхИспользование циклов в сообщенияхИспользование переменных маркета в сообщенияхИспользование функционала JSONPath
        Динамический контент сообщенийarrow
      • Использование API-контента в сообщенияхИспользование HTML-контента в сообщенияхИспользование JSON-контента в сообщенияхИспользование контента из SQL базы данных в сообщениях
      Импорт и экспорт шаблона сообщенияЭкспорт шаблона из PixcraftИмпорт шаблона из стороннего сервиса
      Рассылкиarrow
    • Календарь рассылокБроадкаст рассылкаРегулярная рассылкаТриггерная рассылкаМультивариантный тест (A/B/n)Тестирование расылокРасписание рассылокРазмещения
      Кампанииarrow
    • Работа с КампаниямиЛокальные контрольные группы (ЛКГ)Ошибка нарушения стратификации при достижении лимитаРасширение аудитории в кампанииРазметка аудитории в кампаниях
      Сценарии автоматизацииarrow
    • Работа со Сценариями автоматизацииУзлы сценарияКлассические сценарии автоматизации маркетингаПриветственный сценарий: пошаговая настройкаАвтоматическое оповещение менеджера через сценарийСценарий брошенной корзины
      Маркетarrow
    • Настройки маркета
        Продуктыarrow
      • Создание продукта вручнуюИмпорт продукта из файлаИмпорт по расписаниюСегменты продуктов и SKUПодготовка YML-файла
      ЗаказыПеременные маркета в шаблонахРуководство: как отправить письмо подтверждения заказа
      Лояльностьarrow
    • Создание и настройка программы лояльностиИнтеграция лояльности с внешними системамиБыстрый стартБазовые кейсы использования программы лояльностиСегменты заказовПромокоды
      Веб-слойarrow
      • Формыarrow
      • Создание формыКонструктор формыОформление формыДействия при активации формыАналитика данныхСвязывание данных канала и формыУсловная постраничная логика в формах и опросахNPS-тестирование
        Пикселиarrow
      • Целевые действия клиентов и скоринг
        Попапыarrow
      • Создание и публикация попапаНастройка попапа в редакторе кодаУправление попапами вручную через скриптАналитика попаповРуководство: попап для подписки на pushБазовые кейсы размещения попапа через Менеджер теговКейс: Создание попапа с виджетом "Колесо фортуны"
        Менеджер теговarrow
      • Настройка и установка Менеджера теговТипы триггеровТипы переменныхСвязывание пикселя и Менеджера тегов
      Отчеты и аналитикаarrow
    • Отчет по каналамОтчёт по трафику
        Сводный отчётarrow
      • Все показатели сводного отчета
      Когортный отчётВремя жизниВоронка конверсииЦелиПрирост аудиторииКарта кликов (Email)Отчет по программам лояльностиОтчёт о возвратахОтчёт о недоставкахОтчет по глобальным контрольным группам
      Интеграцииarrow
    • Синхронизация статических сегментовMAXЯндекс.Аудитории™Аудитории Google AdsFacebook Ads Manager™Область видимости интеграцииWhatsAppViber™Tilda™Yandex AppMetrica™Lpgenerator™VK Реклама™Передаваемые при синхронизации данные
        Интеграция сторонних сервисов с Altcraft через Albatoarrow
      • Подключение Altcraft к AlbatoЗапуск приветственного сценария через AlbatoПередача данных о событииОтправка триггерной рассылкиРегистрация событийИмпорт данных из Google Sheets через AlbatoПередача данных из Altcraft
      Notify
        Захват событийarrow
      • Захват событий AltcraftТипы событий для захватаСтруктуры сообщений захвата событийОтправить JSON-запрос батчемОтправить сообщение в очередь RabbitMQОтправить сообщение в exchange RabbitMQОтправить сообщение в Kafka brokerПредварительное тестирование события
      Настройкиarrow
    • Настройки аккаунтаНастройки атрибутовПоисковые теги: создание и применениеПользовательские ссылкиВиртуальные сендерыПолитики отправки
        Пользователи и разграничение доступаarrow
      • Двухфакторная аутентификация (2FA)
        Подключенияarrow
      • Подключение к Facebook AdsПодключение к Google AdsПодключение к Яндекс.Аудиториям™Подключение к 360dialogПодключение к EdnaПодключение к Devino TelecomПодключение к SMS TrafficПодключение к VK Рекламе™Подключение к MTS OmniChannelПодключение через OAuth2Подключение через Basic AuthenticationПодключение через Token AuthenticationПодключение через Custom AuthenticationПодключение к MAXПодключение к NotifyПодключение к Rapporto
      Журнал аудита
      API-запросы: с чего начатьarrow
    • Импорт и обновление профиляЗапуск триггерной рассылкиОтправка профиля клиента в сценарий
    Архив документацииБиблиотека email-маркетолога
  • Сегментация
  • Условия сегментации
  • Сегментация по структуре профиля

Сегментация по структуре профиля

Для комплексной сегментации профилей по JSON-полям вы можете сформировать запросы к MongoDB. Такие запросы описываются в EJSON-форме.

Чтобы построить запрос, выберите отбор по Структуре профиля. Условие отбора — EJSON Запрос:

Операторы​

Для расширенного JSON запроса к базе данных используются различные операторы.Подробнее о EJSON для MongoDB читайте в документации. Ниже мы разберем синтаксис основных операторов.

Допустим, в базе есть профиль с дополнительным JSON-поле list:

В это поле записан следующий массив:

[
{
"contract_id": 10,
"category": "A",
"payment": 1000
}
]

В таблицах показаны запросы, которые позволят выбрать данный профиль из базы:

Операторы сравнения​

ОператорОписаниеПример
$eqРавно
{
   "list.category": {
      "$eq": "A"
   }
}
$neНе равно
{
   "list.category": {
      "$ne": "B"
   }
}
$gtБольше
{
   "list.payment": {
      "$gt": 500
   }
}
$gteБольше или равно
{
   "list.payment": {
      "$gte": 1000
   }
}
$ltМеньше
{
   "list.payment": {
      "$lt": 1500
   }
}
$lteМеньше или равно
{
   "list.payment": {
      "$lte": 1000
   }
}
$inСоответствует хотя бы одному значению в массиве
{
   "list.contract_id": {
      "$in": [
         10,
         20,
         30
      ]
   }
}
$ninНе соответствует ни одному значению в массиве
{
   "list.contract_id": {
      "$nin": [
         20,
         30,
         40
      ]
   }
}

Логические операторы​

ОператорОписаниеПример
$andСоответствует всем указанным в массиве условиям
{
   "$and": [
      {
         "list.payment": {
            "$gte": 1000
         }
      },
      {
      "_city":      {
            "$eq": "Москва"
         }
      }
   ]
}
$notНе соответствует указанному условию
{
   "list.category": {
      "$not": {
         "$eq": "D"
      }
   }
}
$orСоответствует хотя бы одному из указанных в массиве условий
{
   "$or": [
      {
         "list.payment": {
            "$gte": 2000
         }
      },
      {
         "_city": {
            "$eq": "Москва"
         }
      }
   ]
}
$norНе соответствует ни одному из указанных в массиве условий
{
   "$nor": [
      {
         "list.payment": {
            "$gte": 1500
         }
      },
      {
         "_city": {
            "$eq": "Казань"
         }
      }
   ]
}

Оператор $elemMatch​

Оператор $elemMatch позволяет выбрать профили, у которых массив, хранящийся в JSON-поле, содержит хотя бы один элемент, удовлетворяющий всем условиям.

Профиль#1Профиль#2

"list":


   [


      {


      "category":"A",


      "payment": 1000


   },


   {


      

"category":"B",


      "payment": 2000


   }
]

"list":


   [


      {


      "category":"B",
      "payment": 1500


   },


   {


      "category":"C",


      "payment": 2000


   }
]

Запрос выберет Профиль#1 и Профиль#2:

{
"list.category": "B",
"list.payment": 2000
}

Запрос выберет только Профиль#1:

{
"list": {
"$elemMatch": {
"category": "B",
"payment": 2000
}
}
}
предупреждение

Возможно сравнение только простых типов данных. Нельзя сравнивать сложные типы (объект, массив), так как не гарантируется сохранение порядка полей в запросе и в самой базе профилей.

Пример недопустимого сравнения:

// Сравнение JSON-поля профиля "list"
{
"list": {
"$eq": {
"contract_id": 10,
"category": "A",
"payment": 1000
}
}
}

Вместо сравнения целых объектов, лучше использовать сравнение по ключам и их значениям. Например:

{
"list.category": {
"$eq": "A"
}
}

Даты​

Аргумент {"$dateNowFunc": "-5"} позволяет задать смещение даты в днях.

Запрос выберет профили, обновленные не позднее чем вчера:

{
"_updatetime": {
"$gte": {
"$dateNowFunc": "-1"
}
}
}

Также можно использовать эту функцию для работы с датами, записанными в JSON-поле. Например, в дополнительное поле профиля "list" записан следующий массив:

"list":
[
{
"contract_id":10,
"category": "A",
"start_date":"2022-07-01",
"expiration_date":"2022-08-01"
},
{
"contract_id":20,
"category": "B",
"start_date":"2022-06-15",
"expiration_date":"2022-09-15"
}
]

Запрос выберет профили, с которыми договор категории "A" был заключен не раньше чем неделю назад:

{
"list": {
"$elemMatch": {
"category": "A",
"start_date.r": {
"$gte": {
"$dateNowFunc": "-7"
}
}
}
}
}

Запрос выберет профили с договором категории "B", который истекает меньше чем через месяц:

{
"list": {
"$elemMatch": {
"category": "B",
"expiration_date.r": {
"$lte": {
"$dateNowFunc": "30"
}
}
}
}
}
подсказка

Обратите внимание, дни рождения, даты регистрации, а также даты, записанные в дополнительные поля, хранятся в платформе в следующем виде:

"date" : {
"r" : ISODate("2020-09-30T07:42:30.501Z"),
"y" : 2020,
"m" : 9,
"d" : 30,
"md" : 930,
"ymd" : 20200930
}

Когда вы прописываете путь к такому полю, добавьте дополнительный ключ — date.r.

Последнее обновление 31 мар. 2026 г.
Предыдущая страница
Сегментация по внешним SQL-таблицам
Следующая страница
Лучшее время отправки (BST)
  • Операторы
    • Операторы сравнения
    • Логические операторы
    • Оператор $elemMatch
  • Даты
© 2015 - 2026 Altcraft. Все права защищены.