有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Get mongodb数组计数小于或大于

我正在尝试获取所有文档中的数组计数,这些文档的数组内容日期小于或大于我给出的特定输入。我用多种方法编辑了下面的查询,但没有一种方法不能得到我期望的结果

db.user_log.aggregate(
      {$match: {"user_id" : "2"}}, 
      {$unwind: "$meta_data.access_times"},
      {$group: {_id: "$user_id", number: {$sum: 1 }}}
    ) 

上面的查询给出了所有文档中给定用户id的数组计数的总和。结果如下

{
    "_id" : "2",
    "number" : 26.0
}

如何在上述查询中使用gt和lt

我的阵列-

"access_times" : [ 
            ISODate("2017-02-25T07:02:31.935Z"), 
            ISODate("2017-03-25T07:02:39.817Z")
        ],

我将为mongo终端和java制作这个数组


共 (1) 个答案

  1. # 1 楼答案

    Mongo终端查询

    db.user_log.aggregate(
      {$unwind: '$meta_data.access_times'},
      {$match: {"user_id" : "2", "meta_data.access_times" : { $gt : ISODate("2017-03-23T00:00:00.000Z"), $lt : ISODate("2017-03-24T00:00:00.000Z")}}},
      {$group: {_id: null, 'sum': { $sum: 1}}},
      {$group: {_id: '$_id', total_sum: {'$sum': '$sum'}}}
    )