I have two mongodb collections, Transactions and Users,this is transaction example
{ "_id" : ObjectId("5cdd391e1e4b8f0cb8e17d0f"), "txId" :
"6910dc01ff167d90e8fe249ce68a5149f82d099345473fab02916068570974bd",
"sender" : ObjectId("5cdbe473ca52557874005809"), "receiver" :
ObjectId("5cdd26a6b2d370061e8435d7"), "senderWalletId" :
ObjectId("5cdbe473ca5255787400580a"), "receiverWalletId" :
ObjectId("5cdd26a6b2d370061e8435d8"), "status" : "success", "type" :
"transfer", "amount" : 3000, "totalFee" : 40, "createdAt" :
ISODate("2019-05-16T10:19:10.809Z"), "updatedAt" :
ISODate("2019-05-16T10:19:10.809Z"), "__v" : 0 }
and this is a users example
{ "_id" : ObjectId("5d010a140f0c30757f59fe18"), "role" : "client",
"status" : "active", "isPhoneVerified" : true, "personalDocuments" : [
], "email" : "example.com", "firstName" : "mm", "lastName" : "mm",
"phoneNumber" : "0000000", "password" : "$2a$10$.", "pushToken" :
"cSRdsgJXAc67k-PIKwHvslINb0kAaStVzmYPqeIH5oudVTqppHFjxbGEg2B-
1Xe8P0iTH0EYB9PHbKKey", "created_at" :
ISODate("2019-06-12T14:20:04.338Z"), "updated_at" :
ISODate("2019-06-17T13:33:41.613Z"), "__v" : 0, "verifyPhoneCode" :
null }
i've indexed the Transactions documents in ES using logstash and the mongodb-input-plugin successfully, this is the mapping generated by ES for that
"puretransactionsmodified" : {
"mappings" : {
"doc" : {
"properties" : {
"#timestamp" : {
"type" : "date"
},
"#version" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"__v" : {
"type" : "long"
},
"amount" : {
"type" : "long"
},
"createdAt" : {
"type" : "date"
},
"host" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"id" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"log_entry" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"logdate" : {
"type" : "date"
},
"mongo_id" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"receiver" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"receiverWalletId" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"sender" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"senderWalletId" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"status" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"total" : {
"type" : "long"
},
"totalFee" : {
"type" : "long"
},
"txId" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"type" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"updatedAt" : {
"type" : "date"
}
}
}
}
}
}
when i've tried to index both the collections for some analysis using that same plugin
input {
mongodb {
uri => 'mongodb://**.**.**.***:27017/db'
placeholder_db_dir => '/home/jhon/Desktop
/userstransactions'
placeholder_db_name => 'logstash_sqlite.db'
collection => 'transactions'
batch_size => 202
parse_method => "simple"
}
mongodb {
uri => 'mongodb://**.**.**.***:27017/db'
placeholder_db_dir => '/home/jhon/Desktop
/userstransactions'
placeholder_db_name => 'logstash_sqlite.db'
collection => 'wallets'
batch_size => 202
parse_method => "simple"
}
}
it did not work all i had was the transactions , i want to have under the reciever and the sender fields in transaction the name of the reciever provided by user, i'm a newbie on this i've also tried mapping it myself but did not work.
Related
I have a data set where a documents looks like this.
{
"_id" : ObjectId("5c9873aa0fd62b0c9c84e749"),
"account_id" : "1",
"company_tree" : [
{
"id" : "5d561a07-6d2c-45ae-b249-757aa41e9b2b",
"name" : "dept12",
"privacy_advisor" : {
"name" : "wfewf",
"email" : "fwefw",
"phone" : "fwef"
},
"controller" : {
"name" : "qwqwerf",
"email" : "fwefew",
"phone" : "fwefwe"
},
"index" : 1,
"items" : [
{
"id" : "a2aae8b2-24d1-44ee-98a6-29d78835fcfd",
"name" : "dept3",
"privacy_advisor" : {
"name" : "wfewf",
"email" : "fwefw",
"phone" : "fwef"
},
"controller" : {
"name" : "qwqwerf",
"email" : "fwefew",
"phone" : "fwefwe"
},
"index" : 0,
"users" : [
{
"id" : "1",
"name" : "admin",
"email" : "admin#admin.com",
"primary_locale" : "nb",
"role_membership" : {
"id" : 1,
"active_status" : true,
"name" : "leader"
}
},
{
"id" : "f18ed780-c3c4-4a43-b1e2-f7b5deef2660",
"name" : "user",
"email" : "tromesh#tromesh.com",
"primary_locale" : "nb",
"role_membership" : {
"id" : 1,
"active_status" : true,
"name" : "user"
}
}
],
"items" : [
{
"id" : "83923ba0-8d0f-4c47-8953-0f9a86a7fcbf",
"name" : "dept4",
"privacy_advisor" : {
"name" : "wfewf",
"email" : "fwefw",
"phone" : "fwef"
},
"controller" : {
"name" : "qwqwerf",
"email" : "fwefew",
"phone" : "fwefwe"
},
"index" : 0,
"users" : [
{
"id" : "1",
"name" : "admin",
"email" : "admin#test.com",
"primary_locale" : "nb",
"role_membership" : {
"id" : 1,
"active_status" : true,
"name" : "leader"
}
},
{
"id" : "f18ed780-c3c4-4a43-b1e2-f7b5deef2660",
"name" : "user",
"email" : "tromesh#tromesh.com",
"primary_locale" : "nb",
"role_membership" : {
"id" : 2,
"active_status" : true,
"name" : "user"
}
}
],
"items" : [
{
"id" : "34bfbd43-0d48-4ccf-a1a8-27770ee9048f",
"name" : "dept5",
"privacy_advisor" : {
"name" : "wfewf",
"email" : "fwefw",
"phone" : "fwef"
},
"controller" : {
"name" : "qwqwerf",
"email" : "fwefew",
"phone" : "fwefwe"
},
"index" : 0,
"items" : [
{
"id" : "1b8f13af-ff80-46c1-ad59-df454268b4fd",
"name" : "dept6",
"privacy_advisor" : {
"name" : "wfewf",
"email" : "fwefw",
"phone" : "fwef"
},
"controller" : {
"name" : "qwqwerf",
"email" : "fwefew",
"phone" : "fwefwe"
},
"index" : 0,
"statistics" : {
"insight" : {
"value" : "88"
},
"privacyQuality" : {
"value" : "44"
}
}
}
],
"expanded" : true,
"statistics" : {
"privacyQuality" : {
"value" : "56"
}
}
}
],
"expanded" : true,
"selected" : true,
"isAccount" : true
}
],
"expanded" : true,
"statistics" : {
"insight" : {
"value" : "44"
},
"privacyQuality" : {
"value" : "89"
}
},
"isAccount" : true,
"details" : {
"company_name" : "New Company"
},
"public_id" : "e4f5ed70-3be6-11e9-b57b-ed1bd06820e4",
"internal_id" : "e4f5ed70-3be6-11e9-8fde-3df658dfaac7",
"is_public_link_published" : true,
"theme" : {
"primary" : "#3c99df",
"secondary" : "#5cc1ed",
"tertiary" : "#2176b6"
}
}
],
"expanded" : true,
"statistics" : {
"insight" : {
"value" : "75"
}
}
},
//more objects with nested properties.
];
I need to insert data to "users" array in a object in company_tree array checking the name property ("name" : "dept12"). Each object in company_tree array has nested object in "items". I already have the document _id,user data, name of department ("name" : "dept12").
This is the code that i have tried and im kind a stuck here. It would be greate if someone can guide me on hos to update this.
db.getCollection('organization').find({"_id" : ObjectId("5cdbc8d4a3a4280fe86b9085")},{"company_tree":1,'_id': false}).toArray(function (err, result) {
console.log(result);
};
[
{
"user_id" : 12453,
"profile_type" : "demo_type_1",
"records" : [
{
"type" : "typ_11",
"value" : {
"high" : 115,
"low" : 78
},
"_meta" : {
"data_type" : "text"
}
},
{
"type" : "type_1",
"files" : [
{
"title" : "path_prescription_1",
"url" : "/file_name.extension"
},
{
"title" : "path_prescription_2",
"url" : "/file_name__1.extension"
}
],
"_meta" : {
"data_type" : "file"
}
}
]
},
{
"user_id" : 12455,
"profile_type" : "demo_type_1",
"records" : [
{
"type" : "typ_11",
"value" : {
"high" : 115,
"low" : 78
},
"_meta" : {
"data_type" : "text"
}
},
{
"type" : "type_1",
"files" : [
{
"title" : "path_prescription_1",
"url" : "/file_name.extension"
},
{
"title" : "path_prescription_2",
"url" : "/file_name__1.extension"
}
],
"_meta" : {
"data_type" : "file"
}
}
]
},
...
]
i want to append prefix the url value to make it an absolute path while retrieving from the database only when the _meta fields data_type is file not for text. The is stored in the above format and retrieved in the same format only with the appended url.
is there any way to do this by using aggregation pipeline ?
You can try using $addFields like this:
db.getCollection('test').aggregate(
[
{
$unwind: {
path:"$records",
preserveNullAndEmptyArrays: true
}
},
{
$unwind: {
path:"$records.files",
preserveNullAndEmptyArrays: true
}
},
{
$addFields: {
"records.files.url":{
$cond: {
if: {
$eq: ['$records.files', undefined]
},
then: null,
else: {$concat: ["some_prefix", "$records.files.url"]}
}
}
}
}
]
)
This will give you:
/* 1 */
{
"_id" : ObjectId("5b6c484b9a8ea6a11c508520"),
"user_id" : 12453.0,
"profile_type" : "demo_type_1",
"records" : {
"type" : "typ_11",
"value" : {
"high" : 115.0,
"low" : 78.0
},
"_meta" : {
"data_type" : "text"
},
"files" : {
"url" : null
}
}
}
/* 2 */
{
"_id" : ObjectId("5b6c484b9a8ea6a11c508520"),
"user_id" : 12453.0,
"profile_type" : "demo_type_1",
"records" : {
"type" : "type_1",
"files" : {
"title" : "path_prescription_1",
"url" : "some_prefix/file_name.extension"
},
"_meta" : {
"data_type" : "file"
}
}
}
/* 3 */
{
"_id" : ObjectId("5b6c484b9a8ea6a11c508520"),
"user_id" : 12453.0,
"profile_type" : "demo_type_1",
"records" : {
"type" : "type_1",
"files" : {
"title" : "path_prescription_2",
"url" : "some_prefix/file_name__1.extension"
},
"_meta" : {
"data_type" : "file"
}
}
}
/* 4 */
{
"_id" : ObjectId("5b6c484b9a8ea6a11c508521"),
"user_id" : 12455.0,
"profile_type" : "demo_type_1",
"records" : {
"type" : "typ_11",
"value" : {
"high" : 115.0,
"low" : 78.0
},
"_meta" : {
"data_type" : "text"
},
"files" : {
"url" : null
}
}
}
/* 5 */
{
"_id" : ObjectId("5b6c484b9a8ea6a11c508521"),
"user_id" : 12455.0,
"profile_type" : "demo_type_1",
"records" : {
"type" : "type_1",
"files" : {
"title" : "path_prescription_1",
"url" : "some_prefix/file_name.extension"
},
"_meta" : {
"data_type" : "file"
}
}
}
/* 6 */
{
"_id" : ObjectId("5b6c484b9a8ea6a11c508521"),
"user_id" : 12455.0,
"profile_type" : "demo_type_1",
"records" : {
"type" : "type_1",
"files" : {
"title" : "path_prescription_2",
"url" : "some_prefix/file_name__1.extension"
},
"_meta" : {
"data_type" : "file"
}
}
}
But remember to ignore records.files.url field when the record is type text.
JSON DO
{
"_id" : "t6Y596WHx44S",
"pos_txn_type" : "CREDIT_AUTHORIZATION",
"pos_payment_method" : "CREDIT_CARD",
"processing_status" : "APPROVED",
"route" : NumberInt(7),
"audit_info" : {
"version" : "1.0.0.0",
"created_on" : ISODate("2016-08-08T07:26:57.000+0000"),
"updated_on" : ISODate("2016-08-08T07:26:57.000+0000")
},
"inflight_transactions" : [
{
"message_exchange" : {
"service_type" : "GATEWAY_SERVICE",
"adapter_id" : "adpIsoUms",
"route1" : NumberInt(7),
"request" : {
"type" : "com.renovite.ripps.kernel.msg.GatewayRequest",
"acquirer_inst_id" : "00000000001",
"host_address" : "127.0.0.1:2000",
"client_address" : "127.0.0.1:58577",
"domain_request" : {
"type" : "com.renovite.ripps.kernel.msg.CardRequestMessage",
"card" : {
"masked_pan" : "411111xxxxx1111",
"card_type" : "VISA"
},
"transactionAmount" : {
"amount" : NumberInt(100),
"amount_type" : "TXN_AMOUNT",
"currency" : "USD",
"currency_iso" : "840",
"currency_minor_unit" : NumberInt(2)
},
"additionalAmountMap" : {
},
"pos" : {
"stan" : "470641215751",
"entry_mode" : "SWIPED",
"pos_environment" : "ATTENDED",
"card_holder_verification_method" : "UNKNOWN",
"pos_card_holder_verification_method" : "MANUAL_SIGNATURE",
"terminal_capability" : "MSR_MANUAL",
"pos_terminal_id" : "0000000000000001",
"pos_transaction_time" : ISODate("2016-08-08T07:26:55.000+0000"),
"pos_transaction_date" : ISODate("2016-08-08T07:26:55.000+0000"),
"pos_function_code" : "100",
"cp" : true
},
"billTo" : {
"postal_code" : "94538"
}
},
"merchant_details" : {
"merchant_code" : "00000000001",
"merchant_category_code" : "5965",
"merchant_postal_code" : "4567",
"device_code" : "0000000000000001"
},
"auditInfo" : {
"version" : "1.0.0.0",
"created_on" : ISODate("2016-08-08T07:26:57.000+0000")
},
"additionalAttributes" : {
},
"raw_header" : "ISO.UMS.03",
"retrival_reference_number" : "000001215751"
},
"response" : {
"type" : "com.renovite.ripps.kernel.msg.GatewayResponse",
"auditInfo" : {
"version" : "1.0.0.0",
"created_on" : ISODate("2016-08-08T07:27:01.000+0000")
},
"additionalAttributes" : {
},
"domain_response" : {
"type" : "com.renovite.ripps.kernel.msg.CardResponseMessage",
"auth_code" : "831000",
"amount" : 9601.0,
"currency" : "USD",
"transaction_time" : ISODate("2016-08-08T01:57:00.000+0000"),
"processor_ref_number" : "4706412203976900504007",
"approval_code" : "0000",
"avs_response_code" : "2",
"reconciliation_id" : "4706412203976900504007",
"partial_auth" : false
}
}
}
},
{
"message_exchange" : {
"service_type" : "FRAUD_SERVICE",
"adapter_id" : "cartFRAUD",
"request" : {
"type" : "com.renovite.ripps.kernel.msg.ProviderRequest",
"auditInfo" : {
"version" : "1.0.0.0",
"created_on" : ISODate("2016-08-08T07:26:58.000+0000")
},
"additionalAttributes" : {
"MerchantTransactionIdentifier" : "t6Y596WHx44S"
},
"retrivalReferenceNumber" : "000001215751",
"merchantDetails" : {
"merchant_code" : "00000000001",
"merchant_category_code" : "5965",
"partial_auth" : "Y"
},
"domain_request" : {
"type" : "com.renovite.ripps.kernel.msg.fraud.FraudRequestMessage",
"client_address" : "127.0.0.1:58577"
}
},
"route" : "6",
"processing_status" : "APPROVED",
"response" : {
"type" : "com.renovite.ripps.kernel.msg.ProviderResponse",
"domain_response" : {
"type" : "com.renovite.ripps.kernel.msg.fraud.FraudResponseMessage",
"fraud_score" : NumberInt(22)
},
"auditInfo" : {
"version" : "1.0.0.0",
"created_on" : ISODate("2016-08-08T07:26:58.000+0000")
},
"additionalAttributes" : {
}
}
}
},
{
"message_exchange" : {
"service_type" : "AUTH_SERVICE",
"adapter_id" : "cartVACP",
"request" : {
"type" : "com.renovite.ripps.kernel.msg.ProviderRequest",
"auditInfo" : {
"version" : "1.0.0.0",
"created_on" : ISODate("2016-08-08T07:26:58.000+0000")
},
"additionalAttributes" : {
"COMMERCEINDICATOR" : "retail",
"MerchantTransactionIdentifier" : "t6Y596WHx44S",
"ThirdPartyCertificationNumber" : "575357012698"
},
"retrivalReferenceNumber" : "000001215751",
"merchantDetails" : {
"merchant_code" : "00000000004",
"merchant_category_code" : "5965",
"partial_auth" : "Y"
},
"domain_request" : {
"type" : "com.renovite.ripps.kernel.msg.CardRequestMessage",
"card" : {
"masked_pan" : "411111xxxxx1111",
"card_type" : "VISA"
},
"transactionAmount" : {
"amount" : 9601.0,
"amount_type" : "TXN_AMOUNT",
"currency" : "USD",
"currency_iso" : "840",
"currency_minor_unit" : NumberInt(2)
},
"additionalAmountMap" : {
},
"pos" : {
"entry_mode" : "SWIPED",
"pos_terminal_id" : "0000000087654321",
"cp" : true
},
"billTo" : {
"postal_code" : "94538"
}
},
"merchant_code" : "v5p234p575357"
},
"route" : "3",
"processing_status" : "APPROVED",
"response" : {
"type" : "com.renovite.ripps.kernel.msg.ProviderResponse",
"status" : "ACCEPT",
"domain_response" : {
"type" : "com.renovite.ripps.kernel.msg.CardResponseMessage",
"auth_code" : "831000",
"amount" : 9601.0,
"currency" : "USD",
"transaction_time" : ISODate("2016-08-08T01:57:00.000+0000"),
"processor_ref_number" : "4706412203976900504007",
"approval_code" : "100",
"avs_response_code" : "2",
"reconciliation_id" : "4706412203976900504007",
"partial_auth" : false
},
"auditInfo" : {
"version" : "1.0.0.0",
"created_on" : ISODate("2016-08-08T07:27:01.000+0000")
},
"additionalAttributes" : {
"PYMT_NETWORK_TXN_ID" : "016153570198200",
"RECEIPT_NUMBER" : "138115",
"REQUEST_TOKEN" : "Ahj/7wSR/kUuB8C84NOOelmjdg2aMWTJgzct2zlgwasGjBg3S36RRSYgFLfpFFJi0gp1MyMJsMmkmW6QHhMgQJyP8ilwPgXnBpxwvBkj",
"REASONCODE" : NumberInt(100),
"PROCESSORRESPONSE" : "00",
"CARDCATEGORY" : "A",
"MERCHANTREFERENCECODE" : "000001215751",
"CARDGROUP" : "0"
}
}
}
},
{
"message_exchange" : {
"service_type" : "LOYALTY_SERVICE",
"adapter_id" : "cartLOYALTY",
"request" : {
"type" : "com.renovite.ripps.kernel.msg.ProviderRequest",
"auditInfo" : {
"version" : "1.0.0.0",
"created_on" : ISODate("2016-08-08T07:27:01.000+0000")
},
"additionalAttributes" : {
"MerchantTransactionIdentifier" : "t6Y596WHx44S"
},
"retrivalReferenceNumber" : "000001215751",
"merchantDetails" : {
"merchant_code" : "00000000001",
"merchant_category_code" : "5965",
"partial_auth" : "Y"
},
"domain_request" : {
"type" : "com.renovite.ripps.kernel.msg.loyalty.LoyaltyRequestMessage",
"amount" : 9601.0,
"client_address" : "127.0.0.1:58577"
}
},
"route" : "7",
"processing_status" : "APPROVED",
"response" : {
"type" : "com.renovite.ripps.kernel.msg.ProviderResponse",
"domain_response" : {
"type" : "com.renovite.ripps.kernel.msg.loyalty.LoyaltyResponseMessage",
"loyaltyPoint" : NumberInt(677)
},
"auditInfo" : {
"version" : "1.0.0.0",
"created_on" : ISODate("2016-08-08T07:27:01.000+0000")
},
"additionalAttributes" : {
}
}
}
}
]
}
Below is the native mongo query -
db.txnlog.aggregate([
{
$group : {_id : "$pos_txn_type", count : {$sum : 1}, route_sum : {$push : "$inflight_transactions.0.message_exchange.request.domain_request.transactionAmount.amount"}}
}
])
and sheel output-
{ "_id" : "RECONCILE_REQUEST", "count" : 9, "route_sum" : [ [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ] ] }
{ "_id" : "CREDIT_CAPTURE", "count" : 2, "route_sum" : [ [ ], [ ] ] }
{ "_id" : "CREDIT_AUTHORIZATION", "count" : 2, "route_sum" : [ [ ], [ ] ] }
Problem i am not getting amount sum ? Please provide some input.
You can not use the dot notation to access an array element on the group stage, you have to add an extra $project stage to $slice the inflight_transactions array. Here is the query:
db.txnlog.aggregate([
{$project: {
pos_txn_type: 1,
inflight_transaction: {$slice: ["$inflight_transactions", 1]}
}},
{$group: {_id: "$pos_txn_type",
count: {$sum: 1},
route_sum: {$push: "$inflight_transaction.message_exchange.request.domain_request.transactionAmount.amount"}
}
}
]);
// output
{ "_id" : "CREDIT_AUTHORIZATION", "count" : 1, "route_sum" : [ [ 100 ] ] }
There is a colloction, that have multi subdocument per document as follow:
db.test.insert(
{
"username" : " user1",
"Items" : [
{
"name" : "Total",
"value" : 53951
},
{
"name" : "n1",
"value" : 5711
},
{
"name" : "n2",
"value" : 5477
},
{
"name" : "n3",
"value" : 11444
}
]
})
db.test.insert(
{
"username" : " user2",
"Items" : [
{
"name" : "Total",
"value" : 43951
},
{
"name" : "n1",
"value" : 5011
},
{
"name" : "n2",
"value" : 5117
},
{
"name" : "n3",
"value" : 1444
}
]
})
db.test.insert(
{
"username" : " user3",
"Items" : [
{
"name" : "Total",
"value" : 51421
},
{
"name" : "n1",
"value" : 5241
},
{
"name" : "n2",
"value" : 1477
},
{
"name" : "n3",
"value" : 9244
}
]
})
I want to select Items that its name is "Total" as following:
{
"username" : " user1",
"Items" : [
{
"name" : "Total",
"value" : 53951
}
]
}
{
"username" : " user2",
"Items" : [
{
"name" : "Total",
"value" : 43951
}
]
}
{
"username" : " user3",
"Items" : [
{
"name" : "Total",
"value" : 51421
}
]
}
I used some queries like db.test.find({"Items.name":"Total"},{"Items.name":1,"Items.value":1}) . But its not correct.
Do is any way, or I should change Data Structure?
db.test.find({Items:{$elemMatch:{name:'Total'}}});
For more information check MongoDB docs.
I have a collection of 10M documents, that is a pre-aggregation of daily events.
A simple $group took more than 8s, is this performance normal ?
Some date from the profiler :
{
"op" : "command",
"ns" : "analytics.$cmd",
"command" : {
"aggregate" : "aggregation",
"pipeline" : [
{
"$group" : {
"_id" : "",
"hits" : {
"$sum" : "$hits"
}
}
}
]
},
"ntoreturn" : 1,
"keyUpdates" : 0,
"numYield" : 15,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(17169805),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(8582619),
"w" : NumberLong(294)
}
},
"responseLength" : 78,
"millis" : 8594,
"ts" : ISODate("2013-12-04T15:57:38.217Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""
}
Here is one single document
{
"_id" : ObjectId("529e21ee67e807418500daeb"),
"date" : ISODate("2012-09-19T00:00:00Z"),
"hits" : 1,
"infos" : {
"sourceValue" : NumberLong(1),
"eventType" : "createUser",
"sourceType" : "user",
"instance" : "xxx",
"targetType" : "user",
"targetValue" : NumberLong(15)
}
}