2015-10-20 110 views
0

我有一個結構類似這樣的數據:查詢屬性

parent: [ 
    { 
     val1: 'some data', 
     val2: 'some data' 
    }, 
    { 
     val1: 'some data', 
     val2: 'some data 
    } 
] 

如果我想查詢所有嵌套對象屬性「VAL1」的「父」陣中,有一個簡潔的這樣做的方式,即使對象沒有鑰匙?

編輯:擴大這個問題。

基本上,我希望能夠在我的實際查詢中針對val1檢查值,而不是獲取數據庫的每一行,然後使用PHP循環遍歷它們。我不知道數組中的對象的數量,所以我不能直接查詢它們,例如$ collection-> find(array('parent [0]'=>'some data'))。我希望能夠做相當於「找到所有具有包含在'父'數組中的屬性val1設置爲____的對象的行。

+0

'的foreach($ VAR->母公司爲$ OBJ)打印$ obj-> val1;'? –

+0

是的,它們有一個鍵。'[]'是一個數組。'parent [1] .val1' - >'some data'。不可能有無鍵數據結構。要麼我t有一個隱式數字鍵(數組),或者它有一個字符串鍵(對象)。 –

+0

感謝您的回覆。我意識到有一個數字鍵,我的意思是如果我不知道數組中的對象的數量,那麼我怎麼能查詢他們都沒有明確的參考特定的關鍵?爲了清楚起見,我會更新這個問題。 – user3494677

回答

0

您可以使用$elemMatch來匹配文檔中的一個鍵包含對象的數組。

db.myCollection.find({ parent: { $elemMatch: { val1: someValue }}}); 

這是蒙戈代碼,你必須把它轉換爲PHP通過蒙戈驅動程序訪問。