首页 > 数据库 >app端——搜索记录mongoDB

app端——搜索记录mongoDB

时间:2023-07-07 20:55:20浏览次数:36  
标签:mongo mongoDB app springframework 搜索 import org ApAssociateWords data

一、需求说明

展示用户的搜索记录10条,按照搜索关键词的时间倒序

可以删除搜索记录

保存历史记录,保存10条,多余的则删除最久的历史记录

二、数据存储说明

用户的搜索记录,需要给每一个用户都保存一份,数据量较大,要求加载速度快,通常这样的数据存储到mongodb更合适,不建议直接存储到关系型数据库中

mongoDB:高性能、高存储、数据具有结构性

三、安装mongoDB

拉取镜像:docker pull mongo

创建容器:docker run -di --name mongo-service --restart=always -p 27017:27017 -v ~/data/mongodata:/data mongo

   <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
server:
  port: 9998
spring:
  data:
    mongodb:
      host: 192.168.200.130
      port: 27017
      database: leadnews-history

映射

package com.itheima.mongo.pojo;

import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 联想词表
 * </p>
 *
 * @author itheima
 */
@Data
@Document("ap_associate_words")
public class ApAssociateWords implements Serializable {

    private static final long serialVersionUID = 1L;

    private String id;

    /**
     * 联想词
     */
    private String associateWords;

    /**
     * 创建时间
     */
    private Date createdTime;

}

核心方法:

package com.itheima.mongo.test;


import com.itheima.mongo.MongoApplication;
import com.itheima.mongo.pojo.ApAssociateWords;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Date;
import java.util.List;

@SpringBootTest(classes = MongoApplication.class)
@RunWith(SpringRunner.class)
public class MongoTest {


    @Autowired
    private MongoTemplate mongoTemplate;

    //保存
    @Test
    public void saveTest(){
        ApAssociateWords apAssociateWords = new ApAssociateWords();
        apAssociateWords.setAssociateWords("黑马头条");
        apAssociateWords.setCreatedTime(new Date());
        mongoTemplate.save(apAssociateWords);
    }

    //查询一个
    @Test
    public void saveFindOne(){
        ApAssociateWords apAssociateWords = mongoTemplate.findById("5fc2fc3fb60c9a039c44556e", ApAssociateWords.class);
        System.out.println(apAssociateWords);
    }

    //条件查询
    @Test
    public void testQuery(){
        Query query = Query.query(Criteria.where("associateWords").is("黑马头条"))
                .with(Sort.by(Sort.Direction.DESC,"createdTime"));
        List<ApAssociateWords> apAssociateWordsList = mongoTemplate.find(query, ApAssociateWords.class);
        System.out.println(apAssociateWordsList);
    }

    @Test
    public void testDel(){
        mongoTemplate.remove(Query.query(Criteria.where("associateWords").is("黑马头条")),ApAssociateWords.class);
    }
}

 

标签:mongo,mongoDB,app,springframework,搜索,import,org,ApAssociateWords,data
From: https://www.cnblogs.com/fxzm/p/17536032.html

相关文章

  • mongodb数据迁移
    mongodb数据迁移操作--备份单个表mongodump-usuperuser-p123456--port27017--authenticationDatabaseadmin-dmyTest-cd-o/backup/mongodb/myTest_d_bak_201507021701.bak--备份单个库mongodump-usuperuser-p123456--port27017--authenticationD......
  • APP页面设计软件大全,设计师必备这10款
    APP页面设计是APP实施过程中的关键步骤,APP页面设计是不是别具一格,取决于消费者对APP最直观的视觉效果分辨。要创建一个令人惊讶的APP页面设计,一个高效率的APP界面设计软件是不可缺少的。本文列出10款最流行的APP界面设计软件,并逐一展开了深入分析。1.即时设计即时设......
  • UniApp中的路由管理与导航实现
    当在UniApp中进行路由管理和导航时,你可以使用UniApp提供的内置导航功能以及相关API来实现。下面是一些示例代码和最佳实践,帮助你在UniApp中进行路由管理和导航。1.页面跳转在UniApp中,可以使用内置的uni.navigateTo方法来实现页面跳转。该方法会将目标页面压入导航栈中......
  • 构建适配多平台的UniApp应用的最佳实践
    当构建适配多平台的UniApp应用时,可以遵循以下最佳实践:使用条件编译:UniApp提供了条件编译指令,可以根据不同平台进行代码的选择性编译。通过条件编译,你可以针对不同平台编写特定的代码逻辑,以适应各个平台的差异。例如,你可以使用uni.env.platform来判断当前的平台,然后根据平台的......
  • 4.3 x64dbg 搜索内存可利用指令
    发现漏洞的第一步则是需要寻找到可利用的反汇编指令片段,在某些时候远程缓冲区溢出需要通过类似于jmpesp等特定的反汇编指令实现跳转功能,并以此来执行布置好的ShellCode恶意代码片段,LyScript插件则可以很好的完成对当前进程内存中特定函数的检索工作。一般而言远程缓冲区溢出攻击......
  • MongoDB随笔
    db    //查询当前使用的数据库showdbs   //查询所有的数据库use【dbname】 //使用数据库  ;如果没有这个数据库会直接创建这个数据库db.createCollection("[collection_name]")   //创建集合(在sql中叫表)例子:db.createCollection("student")在集......
  • uniapp清除应用缓存
    计算缓存//计算缓存formatSize(){letthat=this;plus.cache.calculate(function(size){letsizeCache=parseInt(size);if(sizeCache==0){that.fileSizeString="0B";}elseif(sizeCache<1024){that.fileSizeString=sizeC......
  • luffy 搜索功能,支付宝支付
    目录1搜索后台接口1.1视图类1.2路由2搜索前台2.1搜索导航栏Header.vuediv下面2.2搜索结果页面Search.vue--->配置路由3支付宝支付介绍4支付宝二次封装5下单接口5.1sql5.2订单相关表设计5.3下单接口1搜索后台接口#咱们写的很简单,但是公司中这个接口是最牛逼的 -......
  • uniapp开发
    1.下载开发工具HBuilderX:地址:HBuilderX-asuperpoweredIDEforVue(dcloud.io)2.新建项目文件-新建-项目-uniapp选择默认模板,vue33.运行方式一:点击运行-运行到浏览器方式二:点击运行-运行到小程序模拟器-微信开发者工具(需要配置小程序安装路径,并且在微信......
  • Appium介绍
    Appium介绍有的APP需要反编译,分析加密算法后,再获取信息。有的APP还需要脱壳,再需要反编译,分析加密算法。但要再了解这些问题,还是需要花些时间的。所以,我们可以通过移动端对APP的控制,来解析数据获取数据。Appium 是一个开源、跨平台(测试程序跨平台、支持多平台上的app测试)、多语......