gpt4 book ai didi

php - mongodb php $push 不插入数组

转载 作者:可可西里 更新时间:2023-11-01 10:34:47 27 4
gpt4 key购买 nike

我在 SO 上看到了很多其他 Mongo PHP $push 问题,但出于某种原因,他们所说的都没有用,所以我发布了我自己的版本。

基本上,我正在尝试遵循 10gen 设定的指南,其中应该使用存储桶来表示新闻提要或博客/评论帖子之类的内容 - 制作包含一定数量 (50) 事件(评论等)的文档.),然后随着内容的增长创建多个文档。

我想做的是将文档 ($event) 插入一个数组 (events),但是当文档不存在(更新)。我试着用一个插入来做到这一点,但是插入和 $push 不能很好地结合在一起。

这是我现在拥有的:

$historyDoc = array('_id'=>$uID, 'count'=>1,
array('$push' => array('events' => $event)));

$query = array('_id'=>$uID);

//add user to history
$collection->update($query,$historyDoc,
array('safe'=>true,'timeout'=>5000,'upsert'=>true));

其中 $event 是格式正确的数组(文档)(例如时间戳、用户 ID、操作、名称),$uID 是从中获取的 MongoID 对象另一个集合。

我得到的结果是这样的:

{
"_id": {
"$oid": "4f77ec39fef97a3965000000"
},
"0": {
"$push": {
"events": {
"timestamp": 1333259321,
"action": "achievement",
"pts": 0,
"name": "join"
}
}
},
"count": 1
}

这很好,因为我的文档至少显示正确,但是怎么会有一个带有“$”的键呢?这并不是说我未能转义 $...出于这个原因,我一直非常专心地使用单引号。

也许我遗漏了什么,或者我破坏了 PHP,但我已经为此苦苦挣扎了一段时间,但我无能为力。它阻碍了我的整个项目,所以....>:/

最佳答案

你的更新文档格式错误,试试这个:

$historyDoc = array('_id' => $uID, 
'count' => 1,
'$push' => array('events' => $event));

关于php - mongodb php $push 不插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9962254/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com