Como garantir um item único em um array baseado em campos específicos - mongoDB?

No meu scenerio, há autores em uma coleção, cada autor temmessages e cada mensagem do autor pode terevents. Cada ator permitiu realizar apenas um tipo de ação uma vez.

<code>db.people.ensureIndex({messages.messageEvents.eventName: 1, messages.messageEvents.actorId: 1}, {unique: true});
</code>

Eu adicionei o índice, mas não tem efeito. Como você vê abaixo, meu documento tem três elementos que têm"eventName":"vote" e"actorId":"1234" isso deve ser contra minha restrição.

Como garantir um item exclusivo emmessageEvents matriz baseada emeventName eactorId Campos ?

Na verdade, preciso atualizar o item existente sem um segundo evento de pesquisa e atualização, em vez de rejeitá-lo.

<code>{
  "_id": "1234567",
  "authorPoint": 0,
  "messages": [
    {
      "messageId": "112",
      "messageType": "Q",
      "messagePoint": 0,
      "messageEvents": [
        {
          "eventName": "Add",
          "actorId": "1234",
          "detail": ""
        },
        {
          "eventName": "Vote",
          "actorId": "1234",
          "detail": "up"
        },
        {
          "eventName": "Vote",
          "actorId": "1234",
          "detail": "down"
        },
        {
          "eventName": "Vote",
          "actorId": "1234",
          "detail": "cork"
        }
      ]
    }
  ]
}
</code>

questionAnswers(1)

yourAnswerToTheQuestion