Javascript 使用mongoose从数组返回匹配的文档

Javascript 使用mongoose从数组返回匹配的文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,因此,基本上我有一个消息字符串,我想得到与关键字匹配的文档 要匹配的标记:时间、家庭 const sample_message = "This user have a challenge of Time and Family" document_1 = { challenge: Object ID 1 keywords: [ "Time", "Test" ] } document_2 = { challenge: Object ID

因此,基本上我有一个消息字符串,我想得到与关键字匹配的文档

要匹配的标记:时间、家庭

const sample_message = "This user have a challenge of Time and Family"

document_1 = {
challenge: Object ID 1
keywords: [ "Time", "Test" ]
}
document_2 = {
challenge: Object ID 2
keywords: [ "Family", "Test2" ]
}
document_3 = {
challenge: Object ID 3
keywords: [ "Foo", "Test3" ]
}



const result = model.find(keywords: { new Regexp(sample_message) })
console.log(result)

我需要返回与示例_消息中的关键字匹配的所有文档,即“时间”和“家庭”。有人能解释正确的方法吗?

那么,这里的拦截器是什么?应该简单到
let keywords=extract\u keywords(示例消息);model.find({keywords:keywords})
基本上我需要返回从关键字匹配到示例消息的文档。我需要有人解释正确的方法。@SergioTulentsev但我要如何准确地提取关键字。我相信使用finding all和循环关键字来匹配示例消息是个坏主意。在我的示例中没有循环。它一次查询所有关键字。至于如何提取它们,这是一个特定于领域的问题,超出了本文的范围(我们不知道什么构成了应用程序中的“关键字”)。首先,您可以简单地拆分空格上的字符串,以便所有单词都是关键字。为什么要使用嵌套的elemMatch?此外,根本不需要使用elemMatch。数组元素不是对象,查询是简单相等的查询之一<代码>查找({“关键字”:{$in:['Time','Family']}})应该可以正常工作。
db.model.find(
    {
        'keywords': {
            $elemMatch: {
                $elemMatch: {
                    $in: ['Time', 'Family']
                }
            }
        }
    },
    {
        "values.$": 1
    }
)