2011-12-12 95 views
2

具有以下阵列:MongoDB关联数组 - 拉可能吗?

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)))); 

但它不工作,什么问题呢?

回答

0

这是不可能做到这个模式。 你试图从数组键中拉出id = 12,但问题是,键的每个元素本身就是一个对象。

做你想要用最小的修改什么的唯一方式就是通过这种方式改变模式:

{ 
    "_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来查询

+0

还有一种使用“$”操作符的方法。但我现在没有时间代表它。 – lig