Я создал совокупный запрос, который использует ключ «parts» как «_id» и возвращает все числа «подчасти», связанные в массиве. Результат из агрегированного запроса нежелателен, так как я получаю результат массива, который содержит 74755 словарных объектов. Каждый объект содержит int 32 для _id и массив для '#associated_subparts'. Я могу получить доступ к подэлементам через:Доступ к массиву, вложенному в словарь в объекте массива
db.agg_result.find({}, {_id: 0, result: { $slice: [0,2]}})
но это всего лишь позиционный метод. Я пробовал варианты вложенных $ elemMatch и $ всех запросов без успеха. Например, я хочу вернуть объект с id 468183339. Возможно, я неправильно проецировал свой исходный сводный запрос, но я бы хотел вернуть коллекцию без гнезда, поэтому каждый объект в коллекции является одной из этих частей> объектов подчастей.
Пример запроса:
var agg_out = db.collection.aggregate({ $group :{ '_id' : "$parts#",
'associated_subparts#' : { $addToSet : "$sub_part" }}});
db.agg_result.insert(agg_out);
db.agg_result.find();
Результат:
{
"_id" : ObjectId("52b4c4c6e984c01d69ff176f"),
"result" : [
{
"_id" : 468183339,
"associated_subparts#" : [
-1408237536
]
},
{
"_id" : 782155933,
"associated_subparts#" : [
-1408237536
]
},
{
"_id" : 1583659973,
"associated_subparts#" : [
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535
]
}
]
}
Привет, Calimero, может быть, я не был ясен, я хочу поддерживать отношения друг к другу. Чтобы я мог видеть все подчасти, связанные с уникальными частями. Например, автомобиль A будет иметь колеса X, шины Y и т. Д. Разморозка доставит мне автомобиль A - Wheels X, а затем еще одну запись Car A - Tyres Y. – KLDavenport
Спасибо за разъяснение и извините за непонимание - просто понял, что вы сделали полную противоположность с вашим текущим запросом агрегирования, и вы отправили полученную коллекцию. Надеюсь, мое следующее обновление будет более полезным! – Calimero
Ах спасибо за то, что я перечитал, я просто изменил «примерные данные» на «примерный результат», который был запутан. – KLDavenport