Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在具有fieldname的数组中插入push值_Php_Mongodb_Mongodb Query - Fatal编程技术网

Php 在具有fieldname的数组中插入push值

Php 在具有fieldname的数组中插入push值,php,mongodb,mongodb-query,Php,Mongodb,Mongodb Query,我是MongoDB新手,我创建了一个非常简单的文档结构,其中包含一个“userId”和一个数组“words”,其中应该包含字段名“wordId” 插入第一个文档效果很好。但是,我被困在为单词数组添加第二个值的过程中。我使用$push尝试了以下操作,但收到错误消息: “字段'words.wordId'必须是数组,但在文档中为int类型” 如果您能帮助我了解此操作的语法,谢谢 $m = new MongoClient(); $db = $m->test; $answers = $db->

我是MongoDB新手,我创建了一个非常简单的文档结构,其中包含一个“userId”和一个数组“words”,其中应该包含字段名“wordId”

插入第一个文档效果很好。但是,我被困在为单词数组添加第二个值的过程中。我使用$push尝试了以下操作,但收到错误消息:

“字段'words.wordId'必须是数组,但在文档中为int类型”

如果您能帮助我了解此操作的语法,谢谢

$m = new MongoClient();
$db = $m->test;
$answers = $db->answers;

$document = array( 
   "userId" => 1, 
   "words" => ['wordId'=> 1] 
);
$answers->insert($document);

$answers->update(array("userId"=>1),array('$push' => array('words.wordId' => 2)));

谢谢你的快速回复。是的,我也试过。然后我得到了一个错误:“字段'words'必须是一个数组,但在document中是object类型的”,实际上PHP“array”符号有时令人困惑,因为这不是世界上其他地方所称的“array”。在PHP中,
[]
array()
的意思是相同的。您希望文档看起来像什么?我意识到在最初的评论之后它不是一个数组。我不知道如何使用更好的格式。但如果我打印它,它看起来是这样的:数组(3){[“_id”]=>object(MongoId){[“$id”]=>string(24)“5958a1e7e87cbf6434007321”}[“userId”]=>int(1)[“words”]=>array(1){[“wordId”]=>int(1)}点是“非数组”。在Mongo shell中查看文档时,它看起来像
{“userId”:1,“words”:{“wordId”:1}
。您不能再次添加“相同的密钥名”。你要么用2“覆盖”这个“wordId”,要么我们改成一个“real”数组。i、 e
{“words”:[{“wordId”:1},{“wordId”:2}]}
如果您理解这里的内容。您的“第一次插入”不正确。应该是的<代码>->插入(['userId'=>1,'words'=>1]])。然后
'words'
是一个真正的数组,您可以
$push