首页 > 数据库 >mongodb Aggregates Accumulators使用初步

mongodb Aggregates Accumulators使用初步

时间:2023-07-08 09:22:04浏览次数:49  
标签:group iterator mongodb Aggregates next Accumulators coll import

import com.mongodb.BasicDBObject;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.model.Accumulators;
import com.mongodb.client.model.Aggregates;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import java.util.Arrays;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring-context.xml"})
@WebAppConfiguration
public class MongoAggTest {

/**
* count
* */
@Test
public void count(){
Bson match = Aggregates.match(Filters.gte("age", 30));
Bson group = Aggregates.group("$province", Accumulators.sum("cnt", 1));
Bson sort = Aggregates.sort(new BasicDBObject("cnt", -1));
MongoCollection<Document> coll = null;//get your coll
MongoCursor<Document> iterator = coll.aggregate(Arrays.asList(match, group,sort)).iterator();
while (iterator.hasNext()){
Document next = iterator.next();
System.out.println(next.toJson());
}
}

/**
* sum
* */
@Test
public void sum(){
Bson match = Aggregates.match(Filters.gte("age", 30));
Bson group = Aggregates.group("$province", Accumulators.sum("cnt", "$age"));
Bson sort = Aggregates.sort(new BasicDBObject("cnt", -1));
       MongoCollection<Document> coll = null;//get your coll
        MongoCursor<Document> iterator = coll.aggregate(Arrays.asList(match, group,sort)).iterator();
while (iterator.hasNext()){
Document next = iterator.next();
System.out.println(next.toJson());
}
}

/**
* first聚合
* */
@Test
public void first(){
Bson match = Aggregates.match(Filters.gte("age", 30));
Bson group = Aggregates.group("$province", Accumulators.first("first", "$$ROOT"));
Bson sort = Aggregates.sort(new BasicDBObject("cnt", -1));
MongoCollection<Document> coll = null;//get your coll
MongoCursor<Document> iterator = coll.aggregate(Arrays.asList(match, group,sort)).iterator();
while (iterator.hasNext()){
Document next = iterator.next();
System.out.println(next.toJson());
}
}

/**
* 多字段聚合
* */
@Test
public void group()throws Exception{
Bson group = Aggregates.group(new BasicDBObject("age", "$age").append("province", "$province"),
Accumulators.sum("cnt", 1));
MongoCollection<Document> coll = null;// do yourself
MongoCursor<Document> iterator = coll.aggregate(Arrays.asList(group)).iterator();
while (iterator.hasNext()){
Document next = iterator.next();
System.out.println(next.toJson());
}
}

@Test
public void add2Set()throws Exception{
Bson group = Aggregates.group("$province", Accumulators.addToSet("nameSet", "$name"));
MongoCollection<Document> coll = null; //do yourself
MongoCursor<Document> iterator = coll.aggregate(Arrays.asList(group)).iterator();
while (iterator.hasNext()){
Document next = iterator.next();
System.out.println(next.toJson());
}
}
}

标签:group,iterator,mongodb,Aggregates,next,Accumulators,coll,import
From: https://www.cnblogs.com/wangdonghua/p/17536630.html

相关文章

  • app端——搜索记录mongoDB
    一、需求说明展示用户的搜索记录10条,按照搜索关键词的时间倒序可以删除搜索记录保存历史记录,保存10条,多余的则删除最久的历史记录二、数据存储说明用户的搜索记录,需要给每一个用户都保存一份,数据量较大,要求加载速度快,通常这样的数据存储到mongodb更合适,不建议直接存储到关系......
  • mongodb数据迁移
    mongodb数据迁移操作--备份单个表mongodump-usuperuser-p123456--port27017--authenticationDatabaseadmin-dmyTest-cd-o/backup/mongodb/myTest_d_bak_201507021701.bak--备份单个库mongodump-usuperuser-p123456--port27017--authenticationD......
  • MongoDB随笔
    db    //查询当前使用的数据库showdbs   //查询所有的数据库use【dbname】 //使用数据库  ;如果没有这个数据库会直接创建这个数据库db.createCollection("[collection_name]")   //创建集合(在sql中叫表)例子:db.createCollection("student")在集......
  • MongoDB
    MongoDBMongoDB基础知识MongoDB基本概念MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB最大的特点就......
  • MongoDB数据库部署与应用
    MongoDB数据库部署与应用拓扑图:推荐步骤:在Centos01上安装mongoDB数据库管理mongoDB服务生成MongoDB配置文件通过控制文件控制MongoDB服务,配置MongoDB身份验证配置mongoDB身份验证管理和修改配置文件支持验证配置mongoDB基本管理配置MongoDB数据备份恢复实验步骤:一.在Centos01上安装m......
  • 阿里云 MongoDB 创建库添加用户并授权
    先通过root进到admin库,右击test选择用户管理测试连接......
  • .Net下验证MongoDB 的 Linq 模式联合查询是否可用
    MongoDB.Driver类库提供了Linq查询的支持。然而,在使用Linq进行联合查询时,是否能够正确转换为MongoDB底层的查询语句还有待验证。今天,我将进行实验来验证一下。输出查询语句首先,通过订阅MongoClientSettings的功能,将查询语句输出。varsettings=MongoCli......
  • 开发中MongoDB遇到的各种问题
    目录一、安装6版本以下二、安装6版本及以上三、安装6版本以下(解压版)四、配置本地WindowsMongoGB服务五、navicat连接远程mongodb数据库六、ip不一致问题一、安装6版本以下安装MongoDB6版本以下的可以参考以下博主->自动安装版(26条消息)MongoDB安装(超详细)_AIbro的博客-C......
  • Docker 安装MongoDB
    Docker安装Consul单机模式使用root用户操作1、拉取官方的最新版本的镜像dockerpullmongo:latest2、创建主机挂载配置目录data目录存放mongodb数据库文件,删除重启容器不会丢失mkdir-p/opt/dockerdata/mongodb/data3、docker启动 mongodockerrun-itd--namemon......
  • MongoDB基础入门
    MongoDB基础入门基本概念MongoDB是一个基于分布式文件存储的非关系型数据库(NoSql),官网,中文网操作语法与JavaScript类似,容易上手,学习成本低Mongodb中有三个重要概念需要掌握数据库(database)数据库是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合集......