Arrays MongoDB中的数组查询
我有一个名为玩家的Mongo收藏,每个文档中都有两个条目,分别是交易和签名。两者都是数组,其中的对象包含时间戳Arrays MongoDB中的数组查询,arrays,mongodb,Arrays,Mongodb,我有一个名为玩家的Mongo收藏,每个文档中都有两个条目,分别是交易和签名。两者都是数组,其中的对象包含时间戳 如何使用此db.collection.count({timestamp:{$gt:158552640000}})来显示在过去7天内已输入到数据库中的数量?假设数据库中有以下两条简化记录: { "_id" : ObjectId("5e8b8b66c1f8161eeeab762f"), "transactions" : [ { "t
如何使用此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天内具有时间戳才能对文档进行计数?可能会添加输入数据和预期输出…所以我想分别查询每个数组,以获得每个数组的条目数。他们都有一个时间戳作为游戏服务器的时间戳,希望我得到了正确的答案-检查我的答案。如果我弄错了,请添加预期输出:)