2016-02-05 88 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

致谢!你节省了我的一天 –