«Схема» для объектов, которые я помещаю в коллекцию, выглядит примерно так:
{
name : "Niranjan", //<--key
children : ["Suraj", "kalidas", "Suraj"]
}
Но я хотел убедиться, что дети будут рассматриваться как набор - в приведенном выше примере я хотел Mongoне принимать запись, потому что «Сурадж» дважды появляется в массиве.
Я попытался создать уникальный индекс для имени и дочерних элементов
db.folks.ensureIndex({name:1,children:1},{unique:true})
Однако это означает, что он делаетглобально уникальный индекс для любого дочернего имени + народного имени.То есть, если у меня также нет уникального индекса по имени, я смогу сделать следующее:
db.folks.insert({name:'p',children:['c1','c2']})
db.folks.insert({name:'p',children:['c3']})
, потому что p + c1, p + c2 и p + c3 различны.Если я попытался вставить следующее:
db.folks.insert({name:'p',children:['c4','c1']})
, тогда я получу
E11000 duplicate key error index: test.folks.$name_1_children_1 dup key: { : "p", : "c1" }
Есть ли способ добиться этого без выполнения проверки во время вставки, как в /5840214/unikalnye-znacheniya-massiva-v-mongoose?