使用嵌套数组中的文本搜索,Mongodb获取匹配的元素

时间:2019-11-06 10:17:23

标签: mongodb mongodb-query full-text-search

我有MongoDB集合:

{
    "_id":1,
    "name":"Product 1",
    "brand":"Nike",
    "variants":[
     {
         "color":"Red",
         "image":"red.jpg",
         "mrp:500,
         "qty":100
     },{
         "color":"Green",
         "image":"green.jpg",
         "mrp:400,
         "qty":80
     },{
         "color":"black",
         "image":"black.jpg",
         "mrp:400,
         "qty":90
     }
     ]
}

现在,我想在此集合中进行搜索,并仅从嵌套数组中获取匹配的元素。我有一个带有颜色和名称的文本索引。

我的搜索查询是:

db.getCollection('product').find({$text: 
{$search:'red'}},{'name':1,"variants":1,'score': {'$meta': 
'textScore'}}).sort({'score': {'$meta': 'textScore'}}).limit(50);

但是这将返回带有所有3个变体的整个嵌套数组。我只想要一个与红色匹配的数组元素。因此它应该仅返回“红色”颜色对象。

响应应为:

"_id" : 1,
"name" : "Product 1",
"variants" : [ 
   {
         "color":"Red",
         "image":"red.jpg",
         "mrp:500,
         "qty":100
     }

],
"score" : 2.2

0 个答案:

没有答案