sql >> データベース >  >> NoSQL >> MongoDB

$ lookupを使用したMongoDB集計には、クエリから返される一部のフィールドのみが含まれます(またはプロジェクトされます)。

    @SiddhartAjmeraが正しい答えを持っているので、他の人を助けるために、「campaign.clientid」のようなネストされた値に二重引用符を追加するだけで済みます。

    最終的なコードは次のようになります:

    db.somecollection.aggregate([
          {
            "$lookup": {
              "from": "campaigns",
              "localField": "campId",
              "foreignField": "_id",
              "as": "campaign"
            }
          },
          {
            "$unwind": "$campaign"
          },
          {
            "$lookup": {
              "from": "entities",
              "localField": "campaign.clientid",
              "foreignField": "_id",
              "as": "campaign.client"
            }
          },
          {
            "$project": {
              "_id": 1,
              "campId": 1,
              "articleId": 1,
              "campaign._id": 1,
              "campaign.clientid": 1,
              "campaign.client._id": 1,
              "campaign.client.username": 1
            }
          }
    ]);
    


    1. MongoDBスキーマ計画のヒント

    2. MongoDB-.find()で条件ステートメントを設定する

    3. ネストされたドキュメントの合計MongoDB

    4. なぜMongoDBはそれほど多くのスペースを占めるのですか?