2016-10-14 4 views
1
{ 
    "$and":[ { 
     "mobile_nos":{ 
      "$regex":{ 
       "regex":"^((?!Nagpur).)*$", 
       "flags":"i" 
      } 
     } 
     }, 
     { 
     "full_name":{ 
      "$regex":{ 
       "regex":"^((?!pune).)*$", 
       "flags":"i" 
      } 
     } 
     } 
    ] 
} 

Над MongoDB запроса не дает никакого результата, поскольку mobile_nos поле не существует в документе.Как я могу выполнить ниже Монго дб запроса

Итак, как я могу изменить запрос, чтобы он возвращал результат, если в документе не существует поля?

ответ

1

Вы можете попробовать следующий запрос, который использует $or оператор для логического условия, которые используют поиск регулярных выражений, если поле существует или не использовать его если поле не существует (с оператором $exists).

Нет необходимости указывать оператору на $and в случае, так как MongoDB обеспечивает неявное AND операции при указании разделенной запятой списка выражений. Используя явный AND с оператором $and необходимо, если же поле или оператор должен быть указан в нескольких выражениях:

{ 
    "$or": [ 
     { 
      "mobile_nos": { 
       "$regex": { 
        "regex": "^((?!Nagpur).)*$", 
        "flags": "i" 
       } 
      } 
     }, 
     { "mobile_nos": { "$exists": false } } 
    ], 
    "full_name": { 
     "$regex": { 
      "regex": "^((?!pune).)*$", 
      "flags": "i" 
     } 
    } 
} 
1

Попробуйте использовать $or с $exists:

{ 
"$and":[ { 
     $or:[ 
     { 
     "mobile_nos":{ 
      "$regex":{ 
       "regex":"^((?!Nagpur).)*$", 
       "flags":"i" 
      } 
     }, 
     { 
      "mobile_nos":{ 
      $exists: false 
      } 
     } 
     ] 
     } 
     }, 
     { 
     "full_name":{ 
      "$regex":{ 
       "regex":"^((?!pune).)*$", 
       "flags":"i" 
      } 
     } 
     } 
    ] 
} 

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

  • Нет связанных вопросов^_^