首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >推送新值到mongodb内部数组- mongodb/php

推送新值到mongodb内部数组- mongodb/php
EN

Stack Overflow用户
提问于 2011-01-09 16:41:45
回答 4查看 25.2K关注 0票数 21

我在mongo中有这个文档:

代码语言:javascript
复制
{
   "_id": ObjectId("4d0b9c7a8b012fe287547157"),
   "done_by": ["1"]
}

并且我想向"done_by“字段添加另一个值,因此我期望的文档将是::

代码语言:javascript
复制
{
   "_id": ObjectId("4d0b9c7a8b012fe287547157"),
   "done_by": ["1","2","3"]
}

我试试这个:

代码语言:javascript
复制
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));

但是什么都没发生,有人知道怎么做吗?

EN

回答 4

Stack Overflow用户

发布于 2011-01-10 06:13:00

代码语言:javascript
复制
$filter = array('_id'=>$id));
$update = array('$push'=>array('done_by'=>'2'));
$q->update($filter,$update);
票数 4
EN

Stack Overflow用户

发布于 2011-01-10 05:14:21

$push => array('done_by' => '2')

manual是这么说的:{ $push : { field : value } }

票数 2
EN

Stack Overflow用户

发布于 2018-02-05 13:05:28

代码语言:javascript
复制
$filter = array('_id'=>$id));
$update = array('$addToSet'=>array('done_by'=>'2'));
$q->update($filter,$update);

当您需要更新时,使用$addToSet,这样您就可以避免重复插入,这会导致多个条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4638368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档