mongodb 聚合 java_mongodb Java代码实现聚合函数sum统计

刚才一个朋友问了一个 mogodb 的问题,如果通过 Java代码操作 mongodb 实现类似 mysql 中 sum() 函数的功能。

直接贴代码

1、依赖

org.mongodb

mongodb-driver

3.2.2

2、Demo

import com.mongodb.Block;

import com.mongodb.MongoClient;

import com.mongodb.MongoCredential;

import com.mongodb.ServerAddress;

import com.mongodb.client.*;

import org.bson.Document;

import java.util.ArrayList;

import java.util.List;

/**

* @author 言曌

* @date 2020/9/27 4:37 下午

*/

public class Demo {

public static void main(String[] args) {

ServerAddress serverAddress = new ServerAddress("localhost", 27017);

List addrs = new ArrayList();

addrs.add(serverAddress);

// MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码

MongoCredential credential = MongoCredential.createScramSha1Credential("root", "admin", "123456".toCharArray());

List credentials = new ArrayList();

credentials.add(credential);

// 通过连接认证获取MongoDB连接

MongoClient mongoClient = new MongoClient(addrs, credentials);

// 连接到数据库, admin 是数据库名

MongoDatabase mongoDatabase = mongoClient.getDatabase("admin");

MongoCollection collection = mongoDatabase.getCollection("article");

// 打印所有数据

FindIterable res = collection.find();

res.forEach(new Block() {

public void apply(Document _doc) {

System.out.println(_doc.toJson());

}

});

// 统计所有文章的访问量

Document sub_group = new Document();

sub_group.put("_id", "0");

sub_group.put("count", new Document("$sum", "$views"));// views 是字段名

Document group = new Document("$group", sub_group);

List aggregateList = new ArrayList();

aggregateList.add(group);

AggregateIterable aggregate = collection.aggregate(aggregateList);

MongoCursor cursor = aggregate.iterator();

try {

while (cursor.hasNext()) {

Document item_doc = cursor.next();

int count = item_doc.getInteger("count");

System.out.println("views sum: " + count);

break;

}

} finally {

cursor.close();

}

}

}

3、补充, mongodb常用命令

因为我的 Mac 之前更新了,导致 /data 目录被删除了,又没有权限创建。之前的 mongodb 无法启动

所以直接使用 homebrew 安装了一下

1)安装 mongodb

brew install mongodb

2)启动 mongodb

brew services start

3)打开 mongodb 命令行

mongo

4)切换到 admin 数据库

use admin

5)创建用户

db.createUser(

{

user:"root",

pwd:"123456",

roles:[{role:"dbOwner",db:"admin"}]

}

}

6) 创建集合

db.createCollection("article")

7) 插入文档

db.article.insert({

"id": 1,

"title": "再别康桥",

"views": NumberInt(20)

})

8) 删除文档

db.article.remove({'id': 1})

9)查询所有文档

db.article.find()

10)根据条件筛选查询文档

db.article.find({'id': 2})

11)求 views 字段的之和

db.article.aggregate([{$group : {_id : 0, sum : {$sum : "$views"}}}])

其他就不贴了,可以参考

https://www.runoob.com/mongodb/mongodb-tutorial.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值