Javascript 如何从mongoDB中的_ID数组连接文档数组
我在MongoDb中有一个文档,它有一个objectid数组。看起来像这样:Javascript 如何从mongoDB中的_ID数组连接文档数组,javascript,node.js,arrays,reactjs,mongodb,Javascript,Node.js,Arrays,Reactjs,Mongodb,我在MongoDb中有一个文档,它有一个objectid数组。看起来像这样: --Shops Collection-- listing_ids: [ ObjectId("6092f741ccb0d55ba444883e"), ObjectId("6092f741ccb0d55ba444883f"), ObjectId("6092f741ccb0d55ba4448840"), ObjectId("6092f741ccb0d55
--Shops Collection--
listing_ids: [
ObjectId("6092f741ccb0d55ba444883e"),
ObjectId("6092f741ccb0d55ba444883f"),
ObjectId("6092f741ccb0d55ba4448840"),
ObjectId("6092f741ccb0d55ba4448841")
],
...
--Listings Collection--
_id: ObjectId("6092f741ccb0d55ba444883e"),
...
我有一份清单文件如下:
--Shops Collection--
listing_ids: [
ObjectId("6092f741ccb0d55ba444883e"),
ObjectId("6092f741ccb0d55ba444883f"),
ObjectId("6092f741ccb0d55ba4448840"),
ObjectId("6092f741ccb0d55ba4448841")
],
...
--Listings Collection--
_id: ObjectId("6092f741ccb0d55ba444883e"),
...
如何将listings文档加入到包含数组的shops文档中?我尝试了MonogoDb中的“$lookup”操作符,但无法使其工作。我总是被一个失败的不透明错误击中。这就是“$lookup”的外观:
const collection = client.db("development").collection("shops");
const shop = await collection.aggregate([
{
"$lookup": {
"from": "listings",
"localfield": "listing_ids",
"foreignField": "_id",
"as": "listings"
}}
]).toArray();
这将返回所有商店文档以及名为
listings
的数组中相应的listings文档。事实证明,我几乎做对了。我最终使用了MongoDB Atlas聚合工具,它帮助了我。这是工作管道:
.aggregate([
{
'$lookup': {
'from': 'listings',
'localField': 'listing_ids',
'foreignField': '_id',
'as': 'listings'
}
}, {
'$lookup': {
'from': 'listings',
'localField': 'highlightedListings',
'foreignField': '_id',
'as': 'highlightedListings'
}
}
]).toArray();