可以在$ regex [mongo db]中使用mongo字段值作为模式吗?

时间:2019-02-26 17:56:10

标签: mongodb mongodb-query aggregation-framework

让我说我有数据


 db = [ 
   { "make": "audi", "year": "2018", "url": "xyz.com/makes-2019-"},
   { "make": "audi", "year": "2013", "url": "abc.com/car/audi-2013"}
]

让我说如果URL中存在品牌或年份,我需要查询数据。 例如像这样

db.cars.aggregate([
   {
     "$match": {
       "$or": [
         { "url": {"$regex": $model, "$options": "i"}}, 
         { "url": {"$regex": $year, "$options": "i"}}
       ]
     } 
    }]) 

除了map-reduce之外,这似乎无法解决任何问题?

1 个答案:

答案 0 :(得分:2)

您可以使用$indexOfCP来检查url字符串是否包含make子字符串

db.collection.aggregate([
  { "$match": {
    "$expr": {
      "$ne": [
        { "$indexOfCP": ["$url", "$make"] },
        -1
      ]
    }
  }}
])

MongoPlayground