У меня есть массив объектов с неизвестным количеством элементов массива:
{ "content": [
{
"_id": "refbooks",
"total": 189,
"published": 189,
"created": 0,
"approved": 0,
"rejected": 0,
"sent_for_approval": 0
},
{
"_id": "weblinks",
"total": 1911,
"published": 1899,
"created": 10,
"approved": 2,
"rejected": 0,
"sent_for_approval": 0
},.................]}
Я хочу преобразовать его в объект вроде данного:
{ "content": {
{
"_id": "refbooks",
"total": 189,
"published": 189,
"created": 0,
"approved": 0,
"rejected": 0,
"sent_for_approval": 0
},
{
"_id": "weblinks",
"total": 1911,
"published": 1899,
"created": 10,
"approved": 2,
"rejected": 0,
"sent_for_approval": 0
},.................}}
Я попытался использовать $ unwind, но не получил требуемый результат. Как реализовать этот конвейер внутренней агрегации в MongoDB?
Я использую Mongo версии 3.4.
ваш ожидаемый результат не является допустимым объектом.
Я предполагаю, что второй не является правильным форматом объекта, вам нужно пара значений ключа для make объекта
{ "content": {
"key1":{
"_id": "refbooks",
"total": 189,
"published": 189,
"created": 0,
"approved": 0,
"rejected": 0,
"sent_for_approval": 0
},
"key2":{
"_id": "weblinks",
"total": 1911,
"published": 1899,
"created": 10,
"approved": 2,
"rejected": 0,
"sent_for_approval": 0
}}}
Да вот так
@LabeebShareef, я думаю, вы уже нашли ответ, есть другой способ сделать то же самое, используя underscore.js underscorejs.org/#groupBy
Я нашел решение.
{
$project: {
"content": {
"$arrayToObject": {
"$map": {
"input": "$content",
"as": "el",
"in": {
"k": "$$el._id",
"v": "$$el"
}
}
}
}
}
Это невозможная установка ... Не понимаю, что вы имеете в виду. Всякий раз, когда у вас есть коллекция вещей, ее нужно обернуть в массив ...?