簡體   English   中英

Mongoose 用外鍵作為數組查找

[英]Mongoose Lookup with foreign key as array

我有一個包含_id名稱以及其他字段 (..) 的問題集合,以及一個包含_id名稱問題數組的測試集合。

我正在嘗試獲取所有問題及其字段並添加一個字段“usedIn”,該字段計算特定問題存在的測試數量。

    questions = await Question.aggregate([
                /*{
                    "$match": {
                        params
                    }
                },*/
                {

                    "$lookup": {
                        "from": "tests",
                        "let": {"questionId": "$_id"},
                        pipeline: [
                            {
                                "$match": {
                                    "$expr": {
                                        "$in": ["$$questionId", "$questions"],
                                    },
                                },
                            },
                        ],
                        as: "tests"
                    }
                },

                {
                    "$addFields": {
                        "usedIn": {
                            "$size": "tests"
                        }
                    }
                },
                {
                    "$project": fieldsObject
                },

            ])

這段代碼給我這個錯誤:

錯誤:無法優化管道:: 由::引起:$size 的參數必須是數組,但類型為:字符串

我究竟做錯了什么?

你可以這樣做:

db.questions.aggregate([
  {
    "$lookup": {
      "from": "tests",
      "localField": "_id",
      "foreignField": "questions",
      "as": "usedIn"
    }
  },
  {
    "$project": {
      "usedIn": {
        "$size": "$usedIn"
      },
      "name": 1
    }
  }
])

工作示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM