MongoDB регулярное выражение нескольких запросов с $ и

0

У меня проблемы с этим.

У меня есть этот фрагмент кода, который я тестировал в Rock Mongo, и он отлично работает.

array(
    'TEST' => 
    array( '$in' => 
        array( new MongoRegex('/^(?!TESTVALUE)/$ig'))
         )
     )

Над куском кода верните мне все документы, которые не имеют значения "TESTVALUE" для ключа "TEST".

Теперь чего я хочу достичь?

Во-первых, я не знаю, как написать фрагмент кода для извлечения всех документов, которые не имеют значений "TESTVALUE" и "SECONDVALUE" для ключа "TEST".

Это будет примерно так:

array(
    'TEST' => 
    array( '$in' => 
        array( new MongoRegex('/^(?!TESTVALUE)/$ig'),new MongoRegex('/^(?!SECONDVALUE)/$ig') )
        )
     )

А также мне понадобится над куском кода, написанного на PHP.

Любая помощь или предложения приветствуются и будут оценены.

заранее спасибо

Теги:
mongodb-query

2 ответа

0

Ваши запросы и ваше описание, похоже, противоречат друг другу. Если вам нужен запрос для всех документов, которые не имеют какой-либо строки в качестве значения поля, почему вы используете регулярные выражения? Не хотите ли вы, чтобы значение было подстрокой значения поля? Если вы просто хотите сделать запрос типа "найти документы, где значение поля TEST не равно" X "или" Y ", используйте $nin (" not in "):

db.collection.find({ "TEST" : { "$nin" : ["X", "Y"] } })

Если поле должно соответствовать нескольким регулярным выражениям, то либо объединить их в одно регулярное выражение, либо объединить условия с $and.

0

Я не думаю, что вы можете использовать $ так, но это должно работать:

'TEST' => array('$and' => array(
    array('$regex' => new MongoRegex('/^(?!TESTVALUE)/$ig'),
    array('$regex' => new MongoRegex('/^(?!TESTVALUE)/$ig')))

что-то на этот счет (непроверенный)

  • 0
    Это не работает, но я вижу, что вы написали непроверенные. Если я попытаюсь что-то сделать с этим, я скажу вам.
  • 0
    Да, в основном я понимаю, что вы должны сравнивать каждое регулярное выражение - или придумывать, как записать их в одно (может быть, с помощью оператора |). $ в ожидает явных значений
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню