这是一个示例JSON对象,其中有1000个类似的对象,存储在我的MongoDB集合中。
{
"_id": ObjectId("5b1bb74ffc7ee601c6915939"),
"groupId": "-abcde",
"applicationId": "avcvcvc",
"integration": "web",
"Category": "message",
"Action": "message",
"Type": "newMessage",
"Id": "activity",
"data": {
"test": "good morning"
},
"timestamp": 1528543055858.0,
"createdAt": ISODate("2018-06-09T11:17:35.868+0000"),
"updatedAt": ISODate("2018-06-09T11:17:35.868+0000"),
"__v": NumberInt(0)
}
这是我根据日期获取数据的查询
db.collection.find({"createdAt" : { $gte : new ISODate("2018-06-09T11:17:35.868+0000") }});
这是我需要对从获取数据acc中接收到的JSON对象执行的一项操作。到目前为止
db.collection.aggregate( [
{ $match: { $or: [ { Type:"on mouse hover click" },{Type:"on mouse out"},
{Type : "on chat start"},{Type :"Load Event"}
] } },
{ $group: { _id:null , count: { $sum: 1 } } }
] );
有什么方法可以使这两个操作在单个查询中执行,而不是获取数据访问权限。到目前为止,先执行聚合,然后再进行聚合?我是MongoDB的新手,所以我不太清楚该怎么做。
答案 0 :(得分:0)
您可以$match
作为聚合期间的时间戳:
db.collection.aggregate( [
{ $match: { "createdAt" : { $gte : new ISODate("2018-06-09T11:17:35.868+0000") }}},
{ $match: { $or: [ { Type:"on mouse hover click" },{Type:"on mouse out"}, {Type : "on chat start"},{Type :"Load Event"} ] } },
{ $group: { _id:null , count: { $sum: 1 } } }
]);