按文本搜索,使用 mongoDB 聚合

Searching by text, using mongoDB aggregation

我正在尝试对 MongoDB Compass 中名为 DAFacility 的集合进行文本搜索:

_id:62170597b3fa8994a0d9a0c8
author:"User"
organizationName:"TSTT"
eventName:"Facility Assessment After Disaster"
eventDate:2022-02-01T00:00:00.000+00:00
area:"Siparia"
disasterNature:"Earthquake"
threatLevel:"High"
surroundingDamage:"Cracked Foundations and Roads"
facilityName:"Point Lisas Main Facility"
facLocation:Array
facStatus:"Operable"
operEqu:23
inoperEqu:7
facilityDamage:"Cracked Walls and Floors"
facImage:Array
__v:0

我正在尝试搜索字段 facilityDamage,我可以在其中搜索整个数据条目中的一个词(例如,搜索词 "Walls" 并显示整个条目)

我正在尝试在 mongoDB 数据聚合选项中执行它,模板为:

[
    {
        '$search': {
            'index': 'string', 
            'text': {
                'query': 'string', 
                'path': 'string'
            }
        }
    }
]

我已经阅读了文档,它让我对索引、查询和路径中的内容更加困惑。 你们能告诉我什么变量进入索引、查询和路径吗?

每当我在节点中使用它时,它 returns 一个空数组:

exports.DAEquipment_damage_search = (req, res) => {
  DAEquipment.aggregate([
    [
      {
        '$match': {
        '$or': [
           {'facilityDamage':{ '$regex':'.*' + req.body.facilityDamage + '.*','$options': 'i' } }
        ]
    }
    }
    }
  ]
  ]).then((DAEquipment) => {
    res.send(DAEquipment);
    console.log(DAEquipment);
  })
  .catch((e) => {
    res.send(e);
  });
};
await DAFacility.aggregate([
{
    $match: {
        $or: [
           {"facilityDamage":{ $regex:'.*' + searchText + '.*',$options: 'i' } },
        ]
    }
},
])

希望对您有所帮助