2016-02-05 86 views
2

我剛開始與貓鼬和有問題找到的元素...貓鼬發現元素數組

我的架構包含subregions從中我想找到它的code匹配的一個數組。該架構如下:

var schema = { 
     name: { 
      type: String, 
      required: true 
     } 

     ... 

     subRegions: [{ 
      name: { 
       type: String, 
       required: true 
      }, 
      code: { 
       type: String, 
       required: true 
      } 
     }] 

     ... 

    }; 

我想出了

find({ 
    subRegions: { 
     "$in": [{ 
      code: regionCode 
     }] 
    } 
}).exec(...) 

但是這是不工作...

回答

6

你的術語是關閉作爲結構不是「多維「數組,因爲它們具有」數組內的數組「,因此」維「。這只是數組中的「對象」。

所以你的問題在這裏是一個基本的情況下,爭論的方式是錯誤的。你不需要$in只是爲了搜索一個數組,而是需要一個「列表/數組」的參數來應用到該字段。

總之,只要查找現場,並使用"dot notation"

.find({ "subRegions.code": regionCode }).exec(...); 

你只需要$in的基本上是一個$or條件,查找用於subRegions.code替代值,所以你不需要,當有隻有一個值可以匹配。

+0

謝謝。是的,這是它。這是遲到了,我混入東西,因爲我最初在該數組中有ObjectId()s ... –

+0

致謝!你節省了我的一天 –