Jak zapewnić unikalny element w tablicy na podstawie określonych pól - mongoDB?
W moim scenariuszu są autorzy w kolekcji, każdy autor mamessages
i każda wiadomość autora może miećevents
. Każdy aktor mógł raz wykonać tylko jeden rodzaj akcji.
<code>db.people.ensureIndex({messages.messageEvents.eventName: 1, messages.messageEvents.actorId: 1}, {unique: true}); </code>
Dodałem indeks, ale nie działa. Jak widać poniżej, mój dokument zawiera trzy elementy"eventName":"vote"
i"actorId":"1234"
to powinno być wbrew mojemu ograniczeniu.
Jak zapewnić unikalny przedmiot wmessageEvents
tablica na podstawieeventName
iactorId
pola?
Właściwie muszę zaktualizować istniejący element bez drugiego zdarzenia wyszukiwania i aktualizacji, zamiast go odrzucać.
<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>