У меня есть документ пользователя, в котором есть массив встроенных журнальных событий событий, из которых есть даты и время, а также другая информация. Есть ли способ получить документ пользователя и ТОЛЬКО подмножество встроенных журнальных событий на основе даты?
На данный момент это невозможно.
Начиная с 1.5.1, вы можете использовать оператор $slice
для выполнения чего-то подобного, но только если ваши объекты журнала уже упорядочены по дате (что теоретически должно быть так, потому что вы обычно ничего не регистрировали в прошлом):
> db.User.findOne({}, {"logs":{$slice: -2}}) // last two
> db.User.findOne({}, {"logs":{$slice: 2}}) // first two
К сожалению, это не позволит вам точно искать в середине подмножества по дате.
db.users.find({ 'user.logs' : {created_on: {$gte: start, $lt: end}})
из запроса для диапазона дат (определенного месяца или дня) ?