сообщество stackoverflow,
Я не часто работаю с большими массивами объектов в mongodb
поэтому я понятия не имею, как решить эту проблему:
1.
я работаю в одном файле, так что, очевидно, это ведьма aggregate
, во-первых, делает {$match:{"_id" : ObjectId("5c3f5cb04147b3082648278b") }},
2.
Хорошо, теперь у меня есть еще один шаг - $ project + $ filter для фильтрации некоторых объектов, но это не важно для этого (я думаю)
У меня есть массив объектов, подобных этому
{
"_id": ObjectId (".."),
"данные":
[
{
id : 01,
groupId: 22,
noteId: 876543
},
{
id : 02,
groupId: 33,
noteId: 767676
},
{
id : 03,
groupId: 22,
noteId: 876543
},
{
id : 04,
groupId: 76,
noteId: 876543
}
]
}
но с тысячами записей и большим количеством значений для объекта.
У каждого groupId может быть любой noteId, но у одинаковых групп всегда один и тот же noteId.
Проблема: ноты могут быть разделены между группами.
Я добавил это
{ $project: {
"groupIds": {"$setUnion": "$data.groupId"}
}}
ведьма дает мне все идентификаторы группы
но очень важно, чтобы я также получил все связанные noteId, потому что
это произвольный идентификатор по отношению к чему-либо еще.
возможно ли как-то объединить объект по указанному полю?
или есть другой способ решить это? Если бы я мог фильтровать объекты с $ in ($ data.groupId, $ setUnion («объединение сверху»), я все равно не знал бы, как извлечь только те 2 поля, которые мне нужны.
заранее спасибо за помощь
H.M.