Ok. I found answer by myself. In general the structure of the key in startkey/endkey must exact match the emited keys.
To solve my case I need to emit all possible combination of the fields I'll be looking for later.
For instance:
emit([doc.profileId, doc.beamId, doc.name, doc.beambeanchId, "true", attachName],
{beamdocId:doc._id, attachName:attachName})
emit([doc.profileId, doc.name, doc.beambeanchId, "true", attachName],
{beamdocId:doc._id, attachName:attachName})
emit([doc.profileId, doc.name, doc.beambeanchId, "true", attachName],
{beamdocId:doc._id, attachName:attachName})
emit([doc.profileId, doc.beambeanchId, "true", attachName],
{beamdocId:doc._id, attachName:attachName})
emit([doc.profileId, attachName],
{beamdocId:doc._id, attachName:attachName})
etc. Now I can find what I need. Of course to make it bullet proof it's better to use object keys instead array, otherwise value might mixed up.