SouthbankSoftware / dbkoda

State of the art MongoDB IDE
https://www.dbkoda.com
GNU Affero General Public License v3.0
870 stars 43 forks source link

Failed to parse explain output, make sure to highlight entire statement. #51

Open ainthek opened 5 years ago

ainthek commented 5 years ago

Running windows version 1.1.0: and testing explain for aggregate queries: I have this query: db.test.aggregate([ { "$match": { "$or": [ { "variables.reportedBy.code": "CRM-00000625" }, { "variables.contactPerson.code": "CRM-00000625" }, { "variables.claimant.code": "CRM-00000625" }, { "variables.claimant.contactRef.code": "CRM-00000625" }, { "variables.claimants.code": "CRM-00000625" }, { "variables.claimants.contactRef.code": "CRM-00000625" }, { "variables.reportedBy.id": "7801184523" }, { "variables.contactPerson.id": "7801184523" }, { "variables.claimant.id": "7801184523" }, { "variables.claimant.contactRef.id": "7801184523" }, { "variables.claimants.id": "7801184523" }, { "variables.claimants.contactRef.id": "7801184523" }] } }, { "$project": { "lossNotificationNumber": 1, "status": 1, "policyNumber": 1, "variables.reportedBy": 1, "variables.contactPerson": 1, "variables.claimant": 1, "variables.claimants": 1 } }, { "$addFields": { "_match": { "$cond": { "if": { "$or": [ { "$eq": ["$variables.reportedBy.code", "CRM-00000625"] }, { "$eq": ["$variables.contactPerson.code", "CRM-00000625"] }, { "$eq": ["$variables.claimant.code", "CRM-00000625"] }, { "$eq": ["$variables.claimant.contactRef.code", "CRM-00000625"] }, { "$eq": ["$variables.claimants.code", "CRM-00000625"] }, { "$eq": ["$variables.claimants.contactRef.code", "CRM-00000625"] }] }, "then": "code", "else": "lax" } } } }])

when clicking explain, it generates correct query (explain() before aggregate) but fails with message: Failed to parse explain output, make sure to highlight entire statement.

db.common.formtemplate.localizeddocumentform.explain().aggregate([ { $match: { $or: [ { "variables.reportedBy.code": "CRM-00000625" }, { "variables.contactPerson.code": "CRM-00000625" }, { "variables.claimant.code": "CRM-00000625" }, { "variables.claimant.contactRef.code": "CRM-00000625" }, { "variables.claimants.code": "CRM-00000625" }, { "variables.claimants.contactRef.code": "CRM-00000625" }, { "variables.reportedBy.id": "7801184523" }, { "variables.contactPerson.id": "7801184523" }, { "variables.claimant.id": "7801184523" }, { "variables.claimant.contactRef.id": "7801184523" }, { "variables.claimants.id": "7801184523" }, { "variables.claimants.contactRef.id": "7801184523" } ] } }, { $project: { lossNotificationNumber: 1, status: 1, policyNumber: 1, "variables.reportedBy": 1, "variables.contactPerson": 1, "variables.claimant": 1, "variables.claimants": 1 } }, { $addFields: { _match: { $cond: { if: { $or: [ { $eq: ["$variables.reportedBy.code", "CRM-00000625"] }, { $eq: ["$variables.contactPerson.code", "CRM-00000625"] }, { $eq: ["$variables.claimant.code", "CRM-00000625"] }, { $eq: ["$variables.claimant.contactRef.code", "CRM-00000625"] }, { $eq: ["$variables.claimants.code", "CRM-00000625"] }, { $eq: ["$variables.claimants.contactRef.code", "CRM-00000625"] } ] }, then: "code", else: "lax" } } } } ]);

when running from cli, this query retyrns: / 1 / { "stages" : [ { "$cursor" : { "query" : { "$or" : [ { "variables.reportedBy.code" : "CRM-00000625" }, { "variables.contactPerson.code" : "CRM-00000625" }, { "variables.claimant.code" : "CRM-00000625" }, { "variables.claimant.contactRef.code" : "CRM-00000625" }, { "variables.claimants.code" : "CRM-00000625" }, { "variables.claimants.contactRef.code" : "CRM-00000625" }, { "variables.reportedBy.id" : "7801184523" }, { "variables.contactPerson.id" : "7801184523" }, { "variables.claimant.id" : "7801184523" }, { "variables.claimant.contactRef.id" : "7801184523" }, { "variables.claimants.id" : "7801184523" }, { "variables.claimants.contactRef.id" : "7801184523" } ] }, "fields" : { "lossNotificationNumber" : 1, "policyNumber" : 1, "status" : 1, "variables.claimant" : 1, "variables.claimants" : 1, "variables.contactPerson" : 1, "variables.reportedBy" : 1, "_id" : 1 }, "queryPlanner" : { "plannerVersion" : 1, "namespace" : "test", "indexFilterSet" : false, "parsedQuery" : { "$or" : [ { "variables.claimant.code" : { "$eq" : "CRM-00000625" } }, { "variables.claimant.contactRef.code" : { "$eq" : "CRM-00000625" } }, { "variables.claimant.contactRef.id" : { "$eq" : "7801184523" } }, { "variables.claimant.id" : { "$eq" : "7801184523" } }, { "variables.claimants.code" : { "$eq" : "CRM-00000625" } }, { "variables.claimants.contactRef.code" : { "$eq" : "CRM-00000625" } }, { "variables.claimants.contactRef.id" : { "$eq" : "7801184523" } }, { "variables.claimants.id" : { "$eq" : "7801184523" } }, { "variables.contactPerson.code" : { "$eq" : "CRM-00000625" } }, { "variables.contactPerson.id" : { "$eq" : "7801184523" } }, { "variables.reportedBy.code" : { "$eq" : "CRM-00000625" } }, { "variables.reportedBy.id" : { "$eq" : "7801184523" } } ] }, "winningPlan" : { "stage" : "SUBPLAN", "inputStage" : { "stage" : "COLLSCAN", "filter" : { "$or" : [ { "variables.claimant.code" : { "$eq" : "CRM-00000625" } }, { "variables.claimant.contactRef.code" : { "$eq" : "CRM-00000625" } }, { "variables.claimant.contactRef.id" : { "$eq" : "7801184523" } }, { "variables.claimant.id" : { "$eq" : "7801184523" } }, { "variables.claimants.code" : { "$eq" : "CRM-00000625" } }, { "variables.claimants.contactRef.code" : { "$eq" : "CRM-00000625" } }, { "variables.claimants.contactRef.id" : { "$eq" : "7801184523" } }, { "variables.claimants.id" : { "$eq" : "7801184523" } }, { "variables.contactPerson.code" : { "$eq" : "CRM-00000625" } }, { "variables.contactPerson.id" : { "$eq" : "7801184523" } }, { "variables.reportedBy.code" : { "$eq" : "CRM-00000625" } }, { "variables.reportedBy.id" : { "$eq" : "7801184523" } } ] }, "direction" : "forward" } }, "rejectedPlans" : [] } } }, { "$project" : { "_id" : true, "policyNumber" : true, "status" : true, "lossNotificationNumber" : true, "variables" : { "claimants" : true, "claimant" : true, "contactPerson" : true, "reportedBy" : true } } }, { "$addFields" : { "_match" : { "$cond" : [ { "$or" : [ { "$eq" : [ "$variables.reportedBy.code", { "$const" : "CRM-00000625" } ] }, { "$eq" : [ "$variables.contactPerson.code", { "$const" : "CRM-00000625" } ] }, { "$eq" : [ "$variables.claimant.code", { "$const" : "CRM-00000625" } ] }, { "$eq" : [ "$variables.claimant.contactRef.code", { "$const" : "CRM-00000625" } ] }, { "$eq" : [ "$variables.claimants.code", { "$const" : "CRM-00000625" } ] }, { "$eq" : [ "$variables.claimants.contactRef.code", { "$const" : "CRM-00000625" } ] } ] }, { "$const" : "code" }, { "$const" : "lax" } ] } } } ], "ok" : 1.0 } whic you fail to parse. Thanx for help