Arrays MongoDB中的数组查询

Arrays MongoDB中的数组查询,arrays,mongodb,Arrays,Mongodb,我有一个名为玩家的Mongo收藏,每个文档中都有两个条目,分别是交易和签名。两者都是数组,其中的对象包含时间戳 如何使用此db.collection.count({timestamp:{$gt:158552640000}})来显示在过去7天内已输入到数据库中的数量?假设数据库中有以下两条简化记录: { "_id" : ObjectId("5e8b8b66c1f8161eeeab762f"), "transactions" : [ { "t

我有一个名为玩家的Mongo收藏,每个文档中都有两个条目,分别是交易和签名。两者都是数组,其中的对象包含时间戳


如何使用此db.collection.count({timestamp:{$gt:158552640000}})来显示在过去7天内已输入到数据库中的数量?

假设数据库中有以下两条简化记录:

{
    "_id" : ObjectId("5e8b8b66c1f8161eeeab762f"),
    "transactions" : [ 
        {
            "timestamp" : ISODate("2020-04-05T00:25:20.202Z")
        }, 
        {
            "timestamp" : ISODate("2020-04-02T00:25:20.202Z")
        }, 
        {
            "timestamp" : ISODate("2020-04-01T00:25:20.202Z")
        }, 
        {
            "timestamp" : ISODate("2020-01-06T00:25:20.202Z")
        }
    ]
},
{
    "_id" : ObjectId("5e8b9008b29982222cd38888"),
    "transactions" : [ 
        {
            "timestamp" : ISODate("2020-04-04T00:25:20.202Z")
        }, 
        {
            "timestamp" : ISODate("2020-02-03T00:25:20.202Z")
        }, 
        {
            "timestamp" : ISODate("2020-02-01T00:25:20.202Z")
        }, 
        {
            "timestamp" : ISODate("2020-02-06T00:25:20.202Z")
        }
    ]
}
然后,您可以获得满足以下条件的数组元素的计数:

db.getCollection('players').aggregate([{
        $project: {
            transactionsCount: {
                $size: {
                    $filter: {
                        input: "$transactions",
                        as: "item",
                        cond: {
                            $gte: ["$$item.timestamp", ISODate('2020-03-30 00:00:00.000Z')]
                        }
                    }
                }
            }
        }

    }

])
结果:

{
    "_id" : ObjectId("5e8b8b66c1f8161eeeab762f"),
    "transactionsCount" : 3
}
{
    "_id" : ObjectId("5e8b9008b29982222cd38888"),
    "transactionsCount" : 1
}

具体条件是什么?两个数组的所有元素是否都需要在过去7天内具有时间戳才能对文档进行计数?可能会添加输入数据和预期输出…所以我想分别查询每个数组,以获得每个数组的条目数。他们都有一个时间戳作为游戏服务器的时间戳,希望我得到了正确的答案-检查我的答案。如果我弄错了,请添加预期输出:)