mongodb - Match a field property containing $ in the name -
i saved lot of aggregations pipeline collection :
{ "_id" : objectid("56d06614070b7f2b117b23db"), "ops" : [ { "$unwind" : "$x" }, { "$unwind" : "$y" }, { "$match" : { "brand" : "z" } } ] } i want make statistics on data :
db.apicalls.aggregate([{"$unwind":"$ops"},{"$match":{***...***}}]) the result unwind operation alone :
{ "_id" : objectid("56d06631070b7f11117b23d4"), "ops" : { "$match" : { "brand" : "zzz" } } }, { "_id" : objectid("56d06631070b7f11117b23d4"), "ops" : { "$unwind" : "$x" } } i want able match $match operations saved collection. haves how select on key "$match" ?
thanks
your question misleading. since $ characters "illegal" property names in mongodb document, "escaped" "slash" \:
{ "_id" : objectid("56d06614070b7f2b117b23db"), "ops" : [ { "\$unwind" : "$x" }, { "\$unwind" : "$y" }, { "\$match" : { "brand" : "z" } } ] } therefore need include characters in key using $exists operator find \$match:
db.apicalls.aggregate([ { "$unwind": "$ops" }, { "$match": { "ops.\\$match": { "$exists": true } }} ]) which returns correct document:
{ "_id" : objectid("56d06614070b7f2b117b23db"), "ops" : { "\$match" : { "brand" : "z" } } }
Comments
Post a Comment