MongoDB关联数组 - 拉可能吗?

时间:2011-12-12 16:09:03

标签: mongodb pull

拥有以下数组:

array(
      'id' => 12,
      'keys' => array('x1' => array('idx' => 12, 'text'=> '1123145'),
                      'x2' => array('idx' => 14, 'text'=> '1123142'),
                      'x3' => array('idx' => 12, 'text'=> '1123145'),
                      'x4' => array('idx' => 14, 'text'=> '1123145')
                      )
     )

我想用idx 12拉出所有键。所以我执行以下操作:

$mdb->db->collection->update(array('id' => 12), array('$pull' => array('keys' => array('idx' => 12))));

但它不起作用,问题是什么?

1 个答案:

答案 0 :(得分:0)

这种架构无法做到这一点。 你试图从数组键中提取id = 12,但问题是,key的每个元素本身就是一个对象。

以最小的修改做你想做的事的唯一方法就是以这种方式改变架构:

{
  "_id" : 12,
  "keys" : [
      {
        "type" : 'x1',
        "idx" : 12,
        "text" : "1111"
      },
      {
        "type" : 'x2',
        "idx" : 14,
        "text" : "1111"
      },
      {
        "type" : 'x3',
        "idx" : 12,
        "text" : "1111"
      },
      {
        "type" : 'x4',
        "idx" : 14,
        "text" : "1111"
      }
    }]
}

您可以按如下方式运行查询:

db.XXX.update(
{ "_id" : 12},
{
  '$pull' : {
     'keys' : {
    'idx' : 12
     }
  }
}
);

我希望你能用数组把它转移到php中,因为它找我说你用php进行查询