我使用这些代码将带有子文档数组的新文档插入到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"
}
]
}
我得到了这个
{
"_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插入它,我也无法添加子文件到同一个是通过php-mongo将另一个子字段数组添加到字段3 请帮助我绝望
答案 0 :(得分:0)
我弄清楚了,给了我很大的压力,但解决方案是如此的错误,
而不是使用[
使用'(数组('这是唯一的更改,'64位'或其版本或其他不支持数组在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 );