#database #mongodb #sorting #group-by #projection
#База данных #mongodb #сортировка #группировать по #проекция
Вопрос:
Предположим, у вас есть следующие документы в моей коллекции:
{
"_id": ObjectId("5c7e3982a50f3b32d2668112"),
"cat_id": 1,
"cat_code": "YMN",
"overall": {
"temp_price": NumberInt(500),
},
"date_wise": [{
"last_inserted_id": "11",
"created_at": "2018-07-26",
"overall": {
"temp_fee": NumberInt(20),
// .....
},
}, {
"last_inserted_id": NumberInt(50),
"created_at": "2018-08-01",
"overall": {
"temp_fee": NumberInt(100),
// .....
},
"data": []
}, {
"last_inserted_id": "28",
"created_at": "2018-08-02",
"overall": {
"temp_fee": NumberInt(22),
// .....
},
}
// .....
]
}
Я хочу выводить вот так:
{
"_id": {
"created_at": "2018-07-26",
"temp_fee": NumberInt(20),
},
"_id": {
"created_at": "2018-08-01",
"temp_fee": NumberInt(100),
},
"_id": {
"created_at": "2018-08-02",
"temp_fee": NumberInt(22),
}
}
Я не профессионал в MongoDB, все еще на стадии обучения. Итак, мои усилия заключаются в следующем.
db.collection.aggregate([
{$match : {'cat_code': 'YMN'}},
{ $project: {overall1: "$date_wise.overall"}},
{ $group: { _id: '$overall1'}},
{'$unwind':'$_id'},
{'$skip':0},
{'$limit':10},
{'$sort': {'_id.created_at' : 1}}
]);
Я пытаюсь объединить одно значение, overall
т.Е. created_at
, и данные overall
внутреннего date_wise
ключа. Применение к сортировке, пропуску и ограничению для нее.
Комментарии:
1. Ваше утверждение не соответствует вашим данным. Возможно, вы имеете в виду «группировать» при
"date_wise.created_at"
суммировании всех значений на эту дату для"date_wize.overall.temp_fee"
? Или вы имеете в виду «суммировать все поля вoverall
«? Или действительно, что именно. Код явно некорректен, и в вашем описании действительно неясно, хотите ли вы простоtemp_fee
или ожидаются другие значения в том же объекте. Требуется уточнение в вопросе.2. Спасибо за ваш ответ. Короче говоря, я хочу,
"created_at": "2018-07-26", "temp_fee": NumberInt(20),
на том же уровне.3. То есть вы в основном просто хотите, чтобы эти два поля из каждого элемента массива были представлены в качестве документов верхнего уровня в ваших результатах? Это все? Никакой группировки или чего-либо еще, только эти поля.
4. ДА. Но для этих данных требуется сортировать, ограничивать и пропускать. Потому что я интегрирую разбивку на страницы, поиск и сортировку этих данных. и temp_fee — не единственный столбец в date_wise. в целом, столбцов больше. Итак, я хочу, чтобы все эти данные были в документе верхнего уровня в моих результатах