Здесь моя проблема:
Модель:
{application: "abc" , date: Time.now, status: "1" user_id: [id1, id2, id4]}
{application: "abc" , date: Time.yesterday, status: "1", user_id: [ id1, id3, id5]}
{application: "abc" , date: Time.yesterday-1, status: "1", user_id: [ id1, id3, id5]}
Мне нужно подсчитать уникальное количество user_id за определенный промежуток времени.
Ожидаемый результат:
{application: "abc" , статус: "1", unique_id_count: 5}
В настоящее время я использую структуру агрегации и подсчитываю идентификаторы за пределами mongodb.
{$ match: {application: "abc" }}, {$ unwind: "$ users" }, {$ group: {_id: {статус: "$ status" }, пользователей: {$ addToSet: "$ users" }}}
Мои массивы идентификаторов пользователей очень велики, поэтому мне нужно итерировать даты, или я получу максимальный лимит документа (16 Мб).
Я мог бы также $group
{year: {$ year: "$ date" }, месяц: {$ month: "$ date" }, день: { $dayOfMonth: "$ date" }
но я также получаю ограничение размера документа.
Можно ли подсчитать размер набора в mongodb?
спасибо