2015-04-25 3 views
2

У меня есть коллекция users, которая имеет поле местоположения с типом String. Я хочу передать поле оценки по документу, которое показывает, совпадает ли местоположение документа с текстом «Остин». Например, зарегистрированное местоположение: Austin, Texas, я хочу, чтобы это соответствовало Austin. Я подумал, что для этого можно будет использовать $ regex.

Я написал эту агрегацию:

$project: { 
    score: { 
    $cond: 
     if: { 
     $regex: {'$location': /Austin/} 
     }, 
     then: 1, 
     else: 0 
    } 
    }, 
    location: 1, 
    firstName: 1, 
    lastName: 1 
} 

Но то, что я получаю:

{ 
    "name": "MongoError", 
    "errmsg": "exception: invalid operator '$regex'", 
    "code": 15999, 
    "ok": 0 
} 
+0

'$ конд: {если: тогда: еще} 'http://docs.mongodb.org/manual/reference/operator/aggregation/cond/ – YOU

+0

Извините, я редактировал вопрос. По-прежнему такая же ошибка – Mohebifar

+0

$ location должна находиться в позиции 'score' как 'location' – YOU

ответ

0

Использование $substr вместо:

{ 
    "$project": { 
     "score": { 
      "$cond": [ 
       { 
        "$eq": [ 
         { 
          "$substr": [ "$location", 0, 6 ] 
         }, 
         "Austin" 
        ] 
       }, 
       1, 
       0 
      ] 
     }, 
     "location": 1, 
     "firstName": 1, 
     "lastName": 1 
    } 
} 
+0

Как насчет 'Техаса'? – Mohebifar

Смежные вопросы