Ninazu
@Ninazu

Как вернуть индекс в массиве?

Версия Mongo 2.4.9, поэтому includeArrayIndex для unwind не подойдёт
Допустим тестовый документ
{
    "_id" : ObjectId("576d01fa2e350f30628b4575"),
    "params" : [ 
        /* 0 */
        {
            "project_id" : 101
        }, 
        
        /* 1 */
        {
            "project_id" : 201
        }, 
        
        /* 2 */
        {
            "project_id" : 301
        },
        
        /* 3 */
        {
            "project_id" : 201
        }, 
    ]
}

Пробую найти дубликаты по project_id и вернуть индексы элементов в массиве params
db.params.aggregate([
    {$unwind: 
        "$params"
    },
    {$group: {
        '_id': '$params.project_id',
        'indexes': {
            $addToSet : 'ARRAY_INDEX' //Тут [1, 3] для project_id = 201
        },
        'count':{
            $sum:1,
        }
    }},
    {$match: {
        'count' : {
            $gt : 1,
        }   
    }},
])
  • Вопрос задан
  • 298 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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