亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MongoDB 通過 findOne 加入集合

MongoDB 通過 findOne 加入集合

智慧大石 2022-12-29 09:48:17
我有這個 mongo 數據庫查詢,它獲取對話線程及其參與者詳細信息。選項卡是線程的一部分。var threadObject = await db        .collection("threads")        .findOne({ tabs: { $in: [ObjectId("5f2ad2ed59645244cc6a837a")] } });線程架構:{  "_id": {    "$oid": "5f2ad2bb59645244cc6a8379"  },  "thread_participants": [    {      "$oid": "5f2ad2a759645244cc6a8377"    },    {      "$oid": "5f2ad2a159645244cc6a8375"    }  ],  "tabs": [    {      "$oid": "5f2ad2ed59645244cc6a837a"    }  ],  "date_created": {    "$date": "2020-08-05T15:39:39.088Z"  }}用戶模式:{  "_id": {    "$oid": "5f2ad2a159645244cc6a8375"  },  "name": {    "familyName": "Doe",    "givenName": "John"  },  "email": "[email protected]",  "display_picture": "url",  "threads": [    {      "$oid": "5f2ad2bb59645244cc6a8379"    }  ]},{  "_id": {    "$oid": "5f2ad2a759645244cc6a8377"  },  "name": {    "familyName": "Doe",    "givenName": "Monica"  },  "email": "[email protected]",  "display_picture": "url",  "threads": [    {      "$oid": "5f2ad2bb59645244cc6a8379"    }  ]}現在的問題是我想檢索用戶的名字和姓氏以及此 threadObject 的結果。我該如何處理?
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

您可以添加另一個電話:


var threadObject = await db

        .collection("threads")

        .findOne({ tabs: { $in: [ObjectId("5f2ad2ed59645244cc6a837a")] } });


var user = await db

        .collection("users")

        .findOne({ threads: threadObject._id });


threadObject.user_name = user.name;

...

或者您可以使用利用$lookup的聚合管道:


var threadObject = await db.collection("threads").aggregate([

    {

        $match: {

            tabs: {$in: [ObjectId("5f2ad2ed59645244cc6a837a")]}

        }

    },

    {

        $lookup: {

            from: "users",

            localField: "_id",

            foreignField: "threads",

            as: "user"

        }

    },

    {

        $unwind: "$user"

    },

    {

        $addFields: {

            user_name: "$user.name"

        }   

    },

    {

        $project: {

            user: 0

        }

    }

]).toArray()

請注意,聚合將返回一個數組而不是一個對象。


查看完整回答
反對 回復 2022-12-29
  • 1 回答
  • 0 關注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號