Javascript 在MongoDB中搜索多个参数时如何知道哪个参数匹配

Javascript 在MongoDB中搜索多个参数时如何知道哪个参数匹配,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,例如,如果我有一个Mongoose模式,其中包含title和body等字段: var Datum = db.model('Datum', { title: { type: String }, body: { type: String }, } 现在我想在两个字段中搜索一个子字符串,我可以这样做: Datum.find({ { $or: [ { title: substring }, { body: substring } ] } }, function

例如,如果我有一个Mongoose模式,其中包含title和body等字段:

var Datum = db.model('Datum', {
    title:      { type: String },
    body:       { type: String },
}
现在我想在两个字段中搜索一个子字符串,我可以这样做:

Datum.find({
  { $or: [ { title: substring }, { body: substring } ] }
},
function(results) {
  console.log(results)
})
但我想赋予标题更大的权重,因此对于两个条目,如果一个在
标题
中匹配,另一个在
正文
中匹配,我希望前者以更高的顺序返回


mongoDB是否可以返回每个结果中匹配的条件?或者我必须为此目的多次搜索数据库吗?

在MongoDB中创建文本索引时,分配给每个索引字段的默认权重为1。 然而,如果您想给某个特定字段更多的权重,您可以在创建索引时包含权重选项,这将为您带来好处

{
db.yourCollection.createIndex(
   {
     title: "text",
     body: "text",

   },
   {
     weights: {
       title: 10,
       body: 5
     },
     name: "myIndex"
   }
 )
}

afaik对于非文本索引没有类似匹配率的函数。(文本索引见satish chennupati答案)

为了解决这个问题,mongo响应需要在客户端进行处理,以避免昂贵的服务器调用,这取决于需要执行的第一个文档检查或循环。

示例:db.articles.find({$text:{$search:{$cake}},{score:{$meta:{$textcore})