【问题标题】:How to join array of documents from array of _ids in mongoDB如何从mongoDB中的_ids数组中加入文档数组
【发布时间】:2021-07-28 04:32:59
【问题描述】:

我在 MongoDb 中有一个包含 ObjectId 数组的文档。看起来像这样:

--Shops Collection--

listing_ids: [
ObjectId("6092f741ccb0d55ba444883e"),
ObjectId("6092f741ccb0d55ba444883f"),
ObjectId("6092f741ccb0d55ba4448840"),
ObjectId("6092f741ccb0d55ba4448841")
],
...

我有一份这样的上市文件:

--Listings Collection--

_id: ObjectId("6092f741ccb0d55ba444883e"),
...

如何将列表文档加入到包含数组的商店文档中?我已经尝试过 MonogoDb 中的“$lookup”运算符,但无法使其正常工作。我总是遇到 FailedToParse 错误。这就是“$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 的数组中的相应列表文档

【问题讨论】:

    标签: javascript node.js arrays reactjs mongodb


    【解决方案1】:

    事实证明我几乎是对的。我最终使用了 MongoDB Atlas Aggregation 工具,它帮助了我。这是工作管道:

    .aggregate([
            {
              '$lookup': {
                'from': 'listings', 
                'localField': 'listing_ids', 
                'foreignField': '_id', 
                'as': 'listings'
              }
            }, {
              '$lookup': {
                'from': 'listings', 
                'localField': 'highlightedListings', 
                'foreignField': '_id', 
                'as': 'highlightedListings'
              }
            }
          ]).toArray();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-11
      • 2018-05-09
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      相关资源
      最近更新 更多