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