2016-07-21 2 views
0

У меня есть несколько записей в той же коллекции с разным статусом-2. Я хочу записать 2-2 каждого статуса.Получить 2-2 записи из коллекции

сбора проб:

[ 
    { 
    "title": "Record1", 
    "status": "pending" 
    }, { 
    "title": "Record2", 
    "status": "ready" 
}, { 
    "title": "Record3", 
    "status": "ready" 
}, { 
    "title": "Record4", 
    "status": "ready" 
}, { 
    "title": "Record5", 
    "status": "pending" 
}, { 
    "title": "Record6", 
    "status": "pending" 
}, { 
    "title": "Record7", 
    "status": "pending" 
}, { 
    "title": "Record8", 
    "status": "pending" 
}, { 
    "title": "Record9", 
    "status": "pending" 
}, { 
    "title": "Record10", 
    "status": "pending" 
}, { 
    "title": "Record11", 
    "status": "ready" 
}] 

Ожидаемый результат:

[ 
    { 
     "title": "Record1", 
     "status": "pending" 
    }, 
    { 
     "title": "Record5", 
     "status": "pending" 
    }, 
    { 
     "title": "Record2", 
     "status": "ready" 
    }, 
    { 
     "title": "Record3", 
     "status": "ready" 
    } 
] 
+0

В вашем вопросе, вы можете объяснить, что вы имеете в виду различного 2 и 2-2? И какая логика дает ожидаемый результат? –

ответ

0

Надеются, что это помогает!

db.test.insert(
{ 
record:[{title:"r1",status:"pending"}, 
     {title:"r2",status:"ready"}, 
     {title:"r3",status:"pending"}, 
     {title:"r4",status:"pending"}, 
     {title:"r5",status:"ready"}, 
     {title:"r6",status:"ready"} 
    ] 
} 
) 

db.test.aggregate(
    [ 
     {$unwind:"$record"}, 
     {$group:{_id:"$record.status",titles:{$addToSet:"$record.title"}}}, 
     {$project:{_id:0,status:"$_id",records:{$slice:["$titles",2]}}}, 
     {$unwind:"$records"} 
    ] 
) 

Результат:

{ "status" : "pending", "records" : "r1" } 
{ "status" : "pending", "records" : "r3" } 
{ "status" : "ready", "records" : "r5" } 
{ "status" : "ready", "records" : "r2" } 
+0

Я использую Laravel и я получаю ошибку MongoResultException в Collection.php строке 42: Localhost: 27017: исключение: недействительный оператор '$ ломоть' –

+0

Мой код $ разреш = Пользователи :: сырье() -> агрегат ([ \t \t \t [ '$ группа' => \t \t [ \t \t \t '_id' => '$ статус', \t \t \t 'названия' => [ '$ addToSet' => ' $ first_name '] \t \t] \t \t], \t \t [ '$ проект' => \t \t \t [ '_id' => 0, 'состояние' => '$ _id' => [ «$ ломтика 'записи' '=> [' $ titles ', 2]]] \t \t], \t \t]); –

+0

Какая версия вашего mongoDB? –

Смежные вопросы