Задать вопрос
@kenny1685

Как в MongoDB обеспечить уникальность объектов вложенного массива по одному/нескольким значению?

Доброго времени суток!

Допустим есть такой объект в монго:

{
    "_id" : ObjectId("5a42c15c9ac4bdd51d78ba0a"),
    "name" : "doc1",
    "nestedObjects" : [
            {
                    "val" : 15,
                    "golden" : true
            },
            {
                    "val" : 16,
                    "golden" : true
            },
            {
                    "val" : 17,
                    "golden" : true
            },

    ]
}

Каким образом можно заставить mongodb сохраняь уникальность поля name и полей val в массиве nestedObjects. Т.е. при попытке засунуть в nestedObjects в объект выше { "val" : 17, "golden" : false }
монга должна выругаться и не дать этого сделать...

Пробовал $addToSet вместо $push - не работает. (работает только на простых объектах)

Пробовал создавать индекс таким образом:

db.test.docs.createIndex({"name":1, "nestedObjects.val": 1}, {unique: true} )
Тоже не работает. Монга все кушает.
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
afi
@afi
Индексы не помогут
https://jira.mongodb.org/browse/SERVER-1068
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы