У меня проблемы с этим.
У меня есть этот фрагмент кода, который я тестировал в 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.
Любая помощь или предложения приветствуются и будут оценены.
заранее спасибо
Ваши запросы и ваше описание, похоже, противоречат друг другу. Если вам нужен запрос для всех документов, которые не имеют какой-либо строки в качестве значения поля, почему вы используете регулярные выражения? Не хотите ли вы, чтобы значение было подстрокой значения поля? Если вы просто хотите сделать запрос типа "найти документы, где значение поля TEST
не равно" X "или" Y ", используйте $nin
(" not in "):
db.collection.find({ "TEST" : { "$nin" : ["X", "Y"] } })
Если поле должно соответствовать нескольким регулярным выражениям, то либо объединить их в одно регулярное выражение, либо объединить условия с $and
.
Я не думаю, что вы можете использовать $ так, но это должно работать:
'TEST' => array('$and' => array(
array('$regex' => new MongoRegex('/^(?!TESTVALUE)/$ig'),
array('$regex' => new MongoRegex('/^(?!TESTVALUE)/$ig')))
что-то на этот счет (непроверенный)