In my situation I just need my result but without my objectID in my array.
This is my method :
return Room.findOne(
    {
      _id: idRoom,
      participants: {$elemMatch: {$ne: this.currentUser.profile}},
    },
    {
      'participants.$': 1,
    }
  )
With elementMatch, the problem is when you found the object, only the first object is returned.
This is my result :
"result": {
    "_id": "5da5e77f51e08708b79565e8",
    "participants": [
       "5da4d5b40cc94f04a7aaad40"
    ],
And this is the real result I need
"result": {
    "_id": "5da5e77f51e08708b79565e8",
    "participants": [
       "5da4d5b40cc94f04a7aaad40"
       "fwnert9248yrhnqwid13982r" // I have another participants
    ],
And my model is just like this :
const RoomSchema = new Schema({
  participants: [{type: Schema.Types.ObjectId,ref: 'Profile'}],
  ...
}, options)
For others reasons, I can't use aggregate, thank you if you have the solution
 
    