Java 创建多个MongoDB查询的Spring数据聚合
数据库MongoDB I以以下格式存储文档:Java 创建多个MongoDB查询的Spring数据聚合,java,spring,mongodb,Java,Spring,Mongodb,数据库MongoDB I以以下格式存储文档: { "achievement": [ { "userFromId":"max", "userToId":"peter", "date":"2016-01-25", "pointCount":1, "description":"good work", "type":"THANKS"
{
"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 } } }
] );
你可以用这样的东西。这将统计符合以下条件的所有文档数 常规查询
db.collection.count({ $or: [ { "userFromId": userFromId }, { "userToId": userToId } ] });
使用聚合
db.collection.aggregate( [
{ $match: { $or: [ { "userFromId": userFromId }, { "userToId": userToId } ] } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );
你能添加预期的输出吗?为什么要使用聚合?我需要通过列表检查true或false,然后检查集合中是否有数据。是否可以添加预期的输出?为什么要使用聚合?我需要检查true或false(我想通过列表进行检查),然后检查集合中是否有数据。当您尝试寻求聚合时,查询生成错误消息:ReferenceError:userFromId not defined。告诉我我做错了什么?
userFromId
和userToId
是输入值。用输入值替换它们。您应该在mongo shell中运行上述查询。对不起,这是我的错。谢谢你的耐心别担心。很乐意提供帮助。当您尝试寻求聚合时,查询会生成错误消息:ReferenceError:userFromId未定义。告诉我我做错了什么?userFromId
和userToId
是输入值。用输入值替换它们。您应该在mongo shell中运行上述查询。对不起,这是我的错。谢谢你的耐心别担心。很乐意帮忙。