spring整合mongodb学习5:查询语法的使用(2)

文末提供代码地址;
接查询语法的使用(1)
直接上代码:

	@Resource
	private MongoOperations tempelate;
	
	@Test
	public void deleteTest(){
		ExecutableRemove<User> remove = tempelate.remove(User.class);
		DeleteResult all = remove.all();
		System.out.println("--------------------->"+all.getDeletedCount());
	}
	
	/**
	 * 初始化加载数据
	 * @throws ParseException 
	 */
	@Test
	public void initInsert() throws ParseException {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		Date commentDate = formatter.parse("2029-02-07 13:33:07");
		
		User user = new User();
		user.setName("a徐凤年");
		Favorites favorites = new Favorites();
		favorites.setCites(Arrays.asList("杭州","北京"));
		favorites.setMovies(Arrays.asList("囧妈","北京欢迎您","功夫"));
		Comment comment1 = new Comment("太监1", "我哪知道111", commentDate);
		Comment comment2 = new Comment("总管1", "emmmmm111", commentDate);
		Comment comment3 = new Comment("天下第一", "就是很好看", commentDate);
		Comment comment4 = new Comment("风流倜傥", "牛逼", commentDate);
		user.setComments(Arrays.asList(comment1,comment2,comment3,comment4));
		user.setFavorites(favorites);
		
		User user2 = new User();
		user2.setName("b温不胜");
		user2.setSalary(new BigDecimal("123.1234"));
		Favorites favorites2 = new Favorites();
		favorites2.setCites(Arrays.asList("离阳","北莽"));
		favorites2.setMovies(Arrays.asList("囧妈","疯狂的石头","华山论剑"));
		user2.setFavorites(favorites2);
		Comment comment5 = new Comment("太监555", "我哪知道111", commentDate);
		Comment comment6 = new Comment("总管1", "emmmmm111", commentDate);
		Comment comment7 = new Comment("天下第一77", "就是很好看", commentDate);
		Comment comment8 = new Comment("风流倜傥", "牛逼了", commentDate);
		Comment comment9 = new Comment("太监1", "我哪知道111", commentDate);
		user2.setComments(Arrays.asList(comment5,comment6,comment7,comment8,comment9));
		
		
		User user3 = new User();
		user3.setName("c曹官子");
		user3.setSalary(new BigDecimal("123.21"));
		Address address3 = new Address();
		address3.setaCode("41333");
		address3.setAdd("北凉.胜3");
		user3.setAddress(address3);
		Favorites favorites3 = new Favorites();
		favorites3.setCites(Arrays.asList("离阳","北莽"));
		favorites3.setMovies(Arrays.asList("囧妈","疯狂的石头"));
		user3.setFavorites(favorites3);
		Comment comment10 = new Comment("太监3", "我哪知道333", commentDate);
		Comment comment11 = new Comment("总管3", "emmmmm333", commentDate);
		user3.setComments(Arrays.asList(comment10,comment11));
		
		User user4 = new User();
		user4.setName("d洛阳");
		user4.setSalary(new BigDecimal("155.21"));
		Collection<User> insertAll = tempelate.insertAll(Arrays.asList(user,user2,user3,user4));
		for (User collects : insertAll) {
			//看一下写进数据库什么样的数据
			System.err.println(collects);
		}
	}
	
	/**
	 * sort,limit,skip
	 */
	@Test
	public void findTest(){
		Query query = new Query();
		//根据名字排序
		//query.with(Sort.by(Direction.DESC, "name"));
		//分页,
		query.skip(2).limit(2);
		List<User> find = tempelate.find(query , User.class);
		for (User user : find) {
			System.err.println(user);
		}
		long count = tempelate.count(query,  User.class);
		System.err.println(count);
	}
	
	/** ========================== 数组操作 ======================  */
	@Test
	public void findArray1(){
		//查询comments.author对象数组中包含(总管1)的数据
		//Query query = query(where("comments.author").is("总管1"));
		//查询favorites.movies数组等于("囧妈","疯狂的石头")的数据,严格按照数量排序来匹配
		//Query query = query(where("favorites.movies").is(Arrays.asList("囧妈","疯狂的石头")));
		//查询favorites.movies数组包含("疯狂的石头","囧妈")的数据,跟数量顺序无关
		//Query query = query(where("favorites.movies").all(Arrays.asList("疯狂的石头","囧妈")));
		//查询favorites.movies数组匹配到("囧妈","功夫")中任意一个的数据,
		//Query query = query(where("favorites.movies").in(Arrays.asList("囧妈","功夫")));
		//查询favorites.movies数组第一个为(囧妈)的数据
		Query query = query(where("favorites.movies.0").is("囧妈"));
		List<User> find = tempelate.find(query, User.class);
		for (User user : find) {
			System.err.println(user);
		}
	}
	/**
	 * 通过$slice返回数组中的部分数据
	 */
	@Test
	public void testArray2() {
		Query query = new Query();
		// 指定查询favorites对象中favorites.movies数组,排除favorites.movies数组第一个数据,取两个
		query.fields().include("favorites").slice("favorites.movies", 1, 2);
		List<User> find = tempelate.find(query, User.class);
		for (User user : find) {
			System.err.println(user.getFavorites());
		}
	}
	
	/**====================== 对象数组操作 ===================== **/
	/**
	 * 备注:对象数组精确查找
	 * @throws ParseException
	 */
	@Test
	public void testObjectArray1() throws ParseException{
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		Date commentDate = formatter.parse("2029-02-07 13:33:07");
		Comment comment = new Comment();
		comment.setAuthor("太监3");
		comment.setCommentTime(commentDate);
		comment.setContent("我哪知道333");
		Query query = query(where("comments").is(comment));
		List<User> find = tempelate.find(query, User.class);
		for (User user : find) {
			System.err.println(user);
		}
		
	}

给个赞◠‿◠☺ 谢谢。。
代码地址:https://github.com/znj929/mongo.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值