¿Cómo garantizar un elemento único en una matriz basada en campos específicos - mongoDB?
En mi escena, hay autores en una colección, cada autor tienemessages
y cada mensaje de autor puede tenerevents
. Cada actor permitió realizar un solo tipo de acción una vez.
<code>db.people.ensureIndex({messages.messageEvents.eventName: 1, messages.messageEvents.actorId: 1}, {unique: true}); </code>
Agregué índice pero no tiene efecto. Como se ve a continuación, mi documento tiene tres elementos que tienen"eventName":"vote"
y"actorId":"1234"
Eso debería estar en contra de mi constricción.
Cómo asegurar un artículo único enmessageEvents
matriz basada eneventName
yactorId
campos ?
En realidad, necesito actualizar el elemento existente sin una segunda búsqueda y actualizar el evento en lugar de rechazarlo.
<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>