簡體   English   中英

創建多個MongoDB查詢的Spring Data Aggregation

[英]Creating Spring Data Aggregation of multiple MongoDB queries

數據庫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 } } }
] );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM