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>