Database

[{"map":{"cities":[{"name":"City1","x":15,"y":5,"owner":1,"defense":6,"income":35},{"name":"City2","x":12,"y":14,"owner":0,"defense":4,"income":16},{"name":"City3","x":6,"y":19,"owner":2,"defense":3,"income":12}]},"players":[{"userid":"64d3ebfb42fb5b118b928f5c","faction":1},{"userid":"636f89f0d4666b666237cec8","faction":2}]}]

Query

db.collection.aggregate([{$project:{"map.cities":{$let:{vars:{faction:{"$getField":{"input":{$first:{$filter:{input:"$players",cond:{$eq:["$$this.userid","64d3ebfb42fb5b118b928f5c"]}}}},"field":"faction"}}},in:{$map:{input:"$map.cities",in:{$mergeObjects:[{name:"$$this.name","x":"$$this.x","y":"$$this.y","owner":"$$this.owner"},{$cond:[{$eq:["$$this.owner","$$faction"]},"$$this",{}]}]}}}}}}}])

Result