Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB 4.4版是否支持$lookup中的$text search?_Mongodb_Aggregation Framework_Lookup - Fatal编程技术网

MongoDB 4.4版是否支持$lookup中的$text search?

MongoDB 4.4版是否支持$lookup中的$text search?,mongodb,aggregation-framework,lookup,Mongodb,Aggregation Framework,Lookup,我正在尝试在$look up内进行文本搜索。我记得在以前的版本(版本4.0)中,这是不可能的。这是一个我正在努力完成的例子。MongoDB 4.4版是否支持$lookup中的$text search db.getCollection('recording').aggregate([ { "$lookup": { "from": "meeting", "let": { &quo

我正在尝试在$look up内进行文本搜索。我记得在以前的版本(版本4.0)中,这是不可能的。这是一个我正在努力完成的例子。MongoDB 4.4版是否支持$lookup中的$text search

db.getCollection('recording').aggregate([
 {
   "$lookup": {
     "from": "meeting",
     "let": {
       "meetingId": "$meeting"
     },
     "as": "meeting_data",
     "pipeline": [
       {
         "$match": {
           "_id": "$$meeting",
           "$text": {
             "$search": "\"go away\""
           }
         }
       }
     ]
   }
 },
 {
   "$lookup": {
     "from": "transcribe",
     "let": {
       "transcribeId": "$transcribe"
     },
     "as": "transcribe_data",
     "pipeline": [
       {
         "$match": {
           "_id": "$$transcribeId",
           "$text": {
             "$search": "\"go away\""
           }
         }
       }
     ]
   }
 }
])
先前错误

   {
        "ok" : 0,
        "errmsg" : "pipeline requires text score metadata, but there is no text score available",
        "code" : 40218,
        "codeName" : "Location40218"
    }

我想试试这个,它在
4.4.1
中运行良好。我刚刚重新编写了变量:

pipeline = [
    {
        "$lookup" : {
            "from" : "meeting",
            "let" : {
                "meetingId" : "$meeting"
            },
            "as" : "meeting_data",
            "pipeline" : [
                {
                    "$match" : {
                        "$expr" : {
                            "$eq" : [
                                "$_id",
                                "$$meetingId"
                            ]
                        }
                    },
                    "$text" : {
                        "$search" : "\"go away\""
                    }
                }}]
            }}]
            



db.getCollection('recording').aggregate(pipeline)

如果可行,请在下一阶段遵循相同的想法。

这在MongoDB版本4.4和4.2中是可能的。您需要按照下面的建议使用$expr。