拥有以下数组:
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 :(得分: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进行查询