我有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