12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 'use strict';
- exports.main = async (event, context) => {
- /**
- * 根据搜索记录,设定时间间隔来归纳出热搜数据并存储在热搜表中
- */
- const SEARCHHOT = 'opendb-search-hot'; // 热搜数据库名称
- const SEARCHLOG = 'opendb-search-log'; // 搜索记录数据库名称
- const SEARCHLOG_timeZone = 604800000; // 归纳搜索记录时间间隔,毫秒数,默认为最近7天
- const SEARCHHOT_size = 10; // 热搜条数
- const DB = uniCloud.database();
- const DBCmd = DB.command;
- const $ = DB.command.aggregate;
- const SEARCHHOT_db = DB.collection(SEARCHHOT);
- const SEARCHLOG_db = DB.collection(SEARCHLOG);
- const timeEnd = Date.now() - SEARCHLOG_timeZone;
- let {
- data: searchHotData
- } = await SEARCHLOG_db
- .aggregate()
- .match({
- create_date: DBCmd.gt(timeEnd)
- })
- .group({
- _id: {
- 'content': '$content',
- },
- count: $.sum(1)
- })
- .replaceRoot({
- newRoot: $.mergeObjects(['$_id', '$$ROOT'])
- })
- .project({
- _id: false
- })
- .sort({
- count: -1
- })
- .end();
- let now = Date.now();
- searchHotData.map(item => {
- item.create_date = now;
- return item;
- }).slice(0, SEARCHHOT_size);
- // searchHotData = searchHotData.sort((a, b) => b.count - a.count).slice(0, SEARCHHOT_size);
- return searchHotData.length ? await SEARCHHOT_db.add(searchHotData) : ''
- };
|