Допустим, у меня есть коллекция пользователей . Каждый пользователь имеет активов . Есть некоторые статистические показатели, которые я хочу выполнить для активов . Но для того, чтобы сделать это, мне нужно иметь только активы в прогнозе в качестве входных данных для совокупности. Как этого достичь?
Я хочу иметь возможность выполнять несколько агрегатных операций с активами . Эти операции будут включать фильтрацию, ограничение и пропуск, поэтому я буду использовать такие операторы, как $ skip , $ match , $ limit и другие. Но чтобы выполнить эти операции над встроенным массивом, мне нужен оператор, который берет документ user и выводит встроенный в него массив assets .
Просто мне нужен оператор, который берет пользовательский документ со следующей схемой и выводит массив ресурсов, которые я дополнительно выполняю над ним агрегирующими операциями.
user:{
name: string,
assets: Asset[],
age: number
}
Я пробовал эти агрегатные операции, но они не работают, как я ожидал.
db.getCollection('users').aggregate( [
{ $match: {_id: ObjectId("5ae837dca9a8e04dd0689824")} } ,
{ $project : { assets: 1 } },
] )
Выводит массив, в котором есть один пользовательский документ, в который встроены ресурсы, как это
[{
"_id" : ObjectId("5ae837dca9a8e04dd0689824"),
"assets" : [{_id:ObjectId("1"), assetName: 'tt' }, {_id : ObjectId("2"), assetName: 'rr'}]
}]
Мне нужно иметь вывод, подобный приведенному ниже
[
{_id:ObjectId("1"), assetName: 'tt'},
{_id:ObjectId("2"), assetName: 'rr'}
]