2014-11-21 31 views
0

我有問題要實現這一點。

我有這段代碼,我已經在Rock Mongo中測試過,它工作正常。

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

上面的一段代碼返回所有沒有爲「TEST」鍵值「TESTVALUE」的文檔。

現在我想實現什麼?

首先,我不知道如何編寫一段代碼來獲取所有文檔,其中沒有值「TESTVALUE」&「SECONDVALUE」,關鍵字爲「TEST」。

這將是這樣的:

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

而且我也需要上面這段寫在PHP代碼。

歡迎任何形式的幫助或建議,我們將不勝感激。

在此先感謝

回答

0

我不認爲你可以使用$在這樣的,但這應該工作:

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

大意的東西(未經測試)

+0

這並不奏效,但我看到你寫入了未經測試的結果 如果我試圖用這個做一些事情,我會告訴你。 – PottaG 2014-11-21 22:22:43

+0

是的,基本上我得到的是你必須與每個正則表達式進行比較 - 或者想出如何將它們寫入一個(也許用|運算符)。$ in期望顯式值 – DAB 2014-11-21 22:24:21

+0

我今天放棄了。我真的沒有想法了。 – PottaG 2014-11-21 22:37:03

0

您的查詢和你的描述似乎相互矛盾。如果您想要查詢所有沒有字符串作爲字段值的文檔,爲什麼使用正則表達式?你不希望該值是字段值的子字符串嗎?如果你只是想去做一個查詢「查找文檔,其中TEST字段的值不是‘X’或‘Y’,使用$nin(」不「):

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

如果該字段應該匹配多個正則表達式,然後將它們組合成一個正則表達式,或者將條件與$and結合起來