数组中数组内的Mongodb对象

时间:2014-09-12 22:51:41

标签: arrays json mongodb object mongodb-query

我有这个JSON数据结构:

{
data :
{
    fields_data :
   [
     [
       {
         key1 : val
       },
       {
         key1 : val
       }
     ],
     [
       {
        key2 : val
       },
       {
       key2 : val
       }
     ]
]
}
}

我很难对此进行查询,我试图以其他方式使用in和elemMatch,但没有成功。

我尝试过的一个问题:

{
    "data.fields_data": {
        $in: [{
            $in: [{
                $elemMatch: 
                    {
            $elemMatch : {
                        "key1": "random text"
                        }
            }
                }]

        }]
    }
}

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好吧,嵌套的$elemMatch应该在这里工作:

db.collection.find{
  'data.fields_data': {
    $elemMatch: {
      $elemMatch: {
        key1: val
      }
    }
  }
}

但你应该考虑在这里摆脱嵌套数组。例如,您可以使用数组if if:

{
  data: {
    fields_data: [{
      data: [
        { key1: val },
        { key1: val }
      ]}, {
      data: [
        { key2: val },
        { key2: val }
      ]}
    ]
  }
}

它允许您使用简单的点符号查询文档:

{ 'data.fields_data.data.key1': val }