我使用这些代码插入一个新的文档与子文档数组到mongodb,它仍然在32位mongo
$product = array(
'field1' => "value",
'field2' => "value",
'field3' => "value",
'field4'=>
[array
(
'subfield1'=>"value",
'subfield2' => "value",
'subfield3' =>"unknown",
'subfield4' =>"unknown",
'subfield5' =>"unknown",
'subfield6'=>"n"
)
],
);
$collection->insert( $product );
但是当我在64位mongo中使用相同的代码时,没有插入发生,
我用'('替换了'[',然后插入发生了,但不是得到一个子文档数组,而是得到一个子文档对象
用这个代替
{
"_id" : ObjectId("53f2f2ee4c3f9f33c6b72464"),
"field1" : "value",
"field2" : "value",
"field3" : [
{
"subfield1" : "Miles to go before i sleep",
"subfield2" : "song",
"subfield3" : "long before"
}
]
}
i am get this
{
"_id" : ObjectId("53f2f2ee4c3f9f33c6b72464"),
"field1" : "value",
"field2" : "value",
"field3" :
{
"subfield1" : "Miles to go before i sleep",
"subfield2" : "song",
"subfield3" : "long before"
}
}
,但我可以通过mongo shell插入它,只有mongo shell不是通过php-mongo,我也不能添加子文档到相同的,即添加另一个子字段数组到字段3通过php-mongo请帮帮我,我绝望了
我想出来了,给了我很大的压力,但解决办法很简单,
代替使用[
使用'(array('这是唯一的变化,'64bit'或其版本或其他不支持数组作为在php-mongo查询[
。这是工作代码
$product = array(
'field1' => "value",
'field2' => "value",
'field3' => "value",
'field4'=>
(
array(
array(
'subfield1'=>"value",
'subfield2' => "value",
'subfield3' =>"unknown",
'subfield4' =>"unknown",
'subfield5' =>"unknown",
'subfield6'=>"n"
)
)
),
);
$collection->insert( $product );