gpt4 book ai didi

java - 创建多个 MongoDB 查询的 Spring Data 聚合

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:40 27 4
gpt4 key购买 nike

数据库MongoDB我存储的文档格式如下:

    {
"achievement": [
{
"userFromId":"max",
"userToId":"peter",
"date":"2016-01-25",
"pointCount":1,
"description":"good work",
"type":"THANKS"
}
]
}

如何获取数据库中特定日期的记录数(如果有),其中人们感谢其他人。我创建了一个查询来检索数据:

    DBObject clause1 = new BasicDBObject("userFromId", userFromId);
DBObject clause2 = new BasicDBObject("userToId", userToId);
DBObject clause3 = new BasicDBObject("sendDate", localDate);
DBObject clause4 = new BasicDBObject("type", Thanks);
BasicDBList or = new BasicDBList();
or.add(clause1);
or.add(clause2);
or.add(clause3);
or.add(clause4);
DBObject query = new BasicDBObject("$or", or);

但我不知道如何获取记录数以及如何使用聚合重写查询?例如:

        Aggregation aggregation = Aggregation.newAggregation(
Aggregation.group("userFromId")
.first("userFromId").as("userFromId")
.sum("pointCount").as("pointCount"));

我不知道如何添加更多参数。如果数据库中的数据不存在,返回请求是什么?

感谢您的帮助

最佳答案

你可以使用这样的东西。这将计算符合以下条件的所有文档数量。

常规查询

db.collection.count({ $or: [ { "userFromId": userFromId }, { "userToId": userToId } ] });

使用聚合

db.collection.aggregate( [
{ $match: { $or: [ { "userFromId": userFromId }, { "userToId": userToId } ] } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );

关于java - 创建多个 MongoDB 查询的 Spring Data 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42055477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com