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