如何在mongodb中使用查询和分组方式
我试图统计集合中的文档,根据一个查询按日期分组。以下是示例文档:如何在mongodb中使用查询和分组方式,mongodb,mongodb-query,Mongodb,Mongodb Query,我试图统计集合中的文档,根据一个查询按日期分组。以下是示例文档: { "_id" : ObjectId("5d2b5c4a33ad6154e776658b"), "_class" : "com.abc.mongo.docs.OCSMongoLog", "jsonObject" : { "keyIdentifier" : "218XXXXXXX25", "microOperationName" : "Deduct amount
{
"_id" : ObjectId("5d2b5c4a33ad6154e776658b"),
"_class" : "com.abc.mongo.docs.OCSMongoLog",
"jsonObject" : {
"keyIdentifier" : "218XXXXXXX25",
"microOperationName" : "Deduct amount from user balance.",
"moduleName" : "OCS",
"responseRaw" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schema
s.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema
-instance\"><soapenv:Body><AcceptDebbitUnitResponse xmlns=\"http://abc.xyz.ws.bss.ijk.google.com\"><AcceptUnitResp>
<ConversationID>101XXVVXX2111-testing</ConversationID><TransactionID>560XXCC273</TransactionID>
<Amount>1</Amount></AcceptUnitResp></AcceptDebbitUnitResponse></soapenv:Body></soapenv:Envelope>",
"operationName" : "Direct Debit",
"id" : null,
"createDate" : "2019-07-14 12:46:59.456",
"requestRaw" : "DebitBalance [conversationId=1012ZXXXXZZ916, transactionId=, originatingAddress=21894
7XXZZX25, destinationAddress=218XXXZZZ5, chargingAddress=21XXXZZZ25, amount=1]"
}
我在这里面有语法错误。。有人能帮我解决这个案子吗
我所期待的
比如:
{
"2019-07-14" : count,
"2019-07-15" : count,
"2019-07-16" : count,
"2019-07-17" : count,
}
您可以使用聚合方法获得类似的输出
db.oCSMongoLog.aggregate([
{
$match: {
"jsonObject.responseRaw": { $regex: "<Amount>" }
}
}, {
$group: {
_id: { $dateToString: { format: "%Y-%m-%d", date: "$jsonObject.createDate" } },
count: { $sum: 1 }
}
}])
谢谢Nikhil,你的解决方案看起来非常正确。但是你看,我是MongoDb的新手。。如何在我的控制台上执行此操作..查看更新并将其直接粘贴到控制台中以便快速响应。。现在它显示:`“ok”:0,“errmsg”:“无法从BSON类型字符串转换为日期”,“code”:16006,“codeName”:“Location16006”}:聚合失败:`Thank Nikhil。。现在完成了。问题在于日期数据类型。我使用字符串作为日期的数据类型。相反,我必须使用
ISODate
数据类型。我接着说:
db.oCSMongoLog.aggregate([
{
$match: {
"jsonObject.responseRaw": { $regex: "<Amount>" }
}
}, {
$group: {
_id: { $dateToString: { format: "%Y-%m-%d", date: "$jsonObject.createDate" } },
count: { $sum: 1 }
}
}])
/* 1 */
{
"_id" : "2019-07-14",
"count" : 1
},
/* 2 */
{
"_id" : "2019-07-15",
"count" : 1
},
/* 3 */
{
"_id" : "2019-07-26",
"count" : 2
}