问题描述
我正在为如何在聚合管道中查找后合并两个对象而苦苦挣扎。
项目文档结构:
{
_id: "609daa4a831d2cfee5a54c7e",projectName: "Test",items: [
{
"show": true,"_id": "609daa4e831d2cfee5a54c7f","order": 0,"item": "609da844b9c98ffeb5b42c0f","createdAt": "2021-05-13T22:38:06.264Z","uid": "607d6f08734bdb0fdd8f9837","updatedAt": "2021-05-13T22:38:06.264Z"
},{
"show": true,"order": 1,"_id": "609daa4e831d2cfee5a54c7e","item": "609daaa4831d2cfee5a54c81",....
]
}
聚合后,我想先做一个$lookup来获取project.items[].item中引用的实际项目,然后将project.items[]中的原始数据放入一个新的key project.items[] .projectData 像这样:
const afteraggregation = {
id: "609daa4a831d2cfee5a54c7e",items: [
{
"id": "609e6a82eca2c80a8d3bad8a","originalName": "z_paymentCancelled_9.wav",....
"projectData": {
"show": true,"updatedAt": "2021-05-13T22:38:06.264Z"
}
},{
"id": "609e6a82eca2c80a8d3bad8a",]
}
这就是我进行第一次查找的方式,它可以正常工作:
"$lookup": {
"from": "items","let": { "itemIds": "$items.item" },"pipeline": [
{ "$match": { "$expr": { "$in": ["$_id","$$itemIds"] } } },{
$addFields: {
id: { $toString: "$_id" },},{
$project: { '_id': 0,'wav2json': 0 },],"as": "items"
}
但是不明白怎么把原来的数据加到items[].projectData??
作为奖励,我希望蜜蜂能够按 project.items[].order... 对聚合项目进行排序...
非常感谢任何帮助!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)