我有一个包含多个项目的文档,需要从另一个集合中查找更多信息以填写数据。
主要文件:
{
_id: ObjectID("5a30ff41af58f911946b122e"),
SalesItems: [
{
SalesItemID: 1139,
Quantity: 2,
Amount: 3.00
},
{
SalesItemID: 2549,
Quantity: 1,
Amount: 5.40
}
]
}
然后是另一个名为SalesItem的集合,其中包含这些销售项目的详细信息。两份文件
{
_id: 1139,
Name: "Item #1",
Price: 1.50
}
{
_id: 2549,
Name: "Item #2",
Price: 5.40
}
我正在尝试在聚合中执行$查找,以将SalesItem集合中的信息拉入我的主集合的SalesItems数组。要获得如下结果:
{
_id: ObjectID("5a30ff41af58f911946b122e"),
SalesItems: [
{
SalesItemID: 1139,
Quantity: 2,
Amount: 3.00,
SalesItemInfo: {
_id: 1139,
Name: "Item #1",
Price: 1.50
}
},
{
SalesItemID: 2549,
Quantity: 1,
Amount: 5.40,
SalesItemInfo: {
_id: 2549,
Name: "Item #2",
Price: 5.40
}
}
]
}
有人能告诉我这是否可行吗?
我尝试了以下操作,但结果是结果中的SalesItems对象中只存在SalesItemInfo。
aggregate([
{
$lookup: {
from: "SalesItem",
localField: "SalesItems.SalesItemID",
foreignField: "_id",
as: "SalesItems.SalesItemInfo"
}
}
])
在本例中,SalesItem集合已被大量简化,在插入Mongo之前,它实际上是一个990行的JSON文档。在主表中,它将被复制大约64000次,因此我试图避免将信息嵌入到主文档中。
在此方面的任何帮助都将不胜感激。
谢谢,丹尼尔。