问题
I have this query
db.words.find({ "$text": { "$search": "\"cake sale\"" } }) // gives expected answer in robo3T
Now my text
search is dynamic
const text = "cake sale"
db.words.find({ "$text": { "$search": `\\"${text}\\"` } })
But it does not give me expected output with nodejs. So How can I parse the backslash here?
回答1:
Your query is incorrect. You need to change the query
db.words.find({ "$text": { "$search": `"\"${text}\"` } })
to
db.words.find({ "$text": { "$search": `\"${text}\"` } })
Since, there is an extra double quote ("
) in the beginning after the first backquote. Doing that will fix your query.
Simple illustration:
console.log("\"cake sale\"");
var text = "cake sale";
console.log(`\"${text}\"`);
// both the console.log gives same result
来源:https://stackoverflow.com/questions/59988073/how-to-match-exact-phrase-with-dynamic-string-in-text-index-mongodb