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

标签 php mongodb

我在 mongo 中有这个文件:

{
   "_id": ObjectId("4d0b9c7a8b012fe287547157"),
   "done_by": ["1"]
}

我想为“done_by”字段添加另一个值,所以我预期的文档将是::

{
   "_id": ObjectId("4d0b9c7a8b012fe287547157"),
   "done_by": ["1","2","3"]
}

我试试这个:

$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));

但是没有任何反应,有人知道怎么做吗?

最佳答案

因为这些答案都没有真正告诉你这里出了什么问题......

$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));

您的 $push 语句有问题,您没有推送值为“2”的“done_by”,您实际上是在发送“done_by”“2"...

问题来了……

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

这应该有一个 => 而不是 ,

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

但是,请注意,每次运行此命令时,如果您希望 MongoDB 仅插入“2”(如果它在“done_by”中尚不存在),则它会插入另一个“2”,那么您应该使用 $addToSet ...

array('$addToSet' => array("done_by" => "2"))

这个语句不会每次都加2,只会第一次。

关于php - 将新值推送到 mongodb 内部数组 - mongodb/php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4638368/

相关文章:

php - 从当前id获取上一行和下一行数据 SQL PHP

php - 如何在 Laravel 集成测试中等待页面重新加载

php - 如何在 symfony2 中使用 mongodb Doctrine 选择某些字段

mongodb - MongoDB 集合中可以包含另一个集合吗?

c++ - 如何将 gmail 中的 mpz_t 存储在 mongodb 上?

javascript - 附加在从 php 中的curl 检索到的页面上不起作用

php - 获取 youtube 订阅者列表给我 400 错误

php - 如何定位 php.ini 文件 (xampp)

mongodb - 引用 MongoDB Aggregation Pipeline 中的整个文档

MongoDB:$nin 和 $in 在 $elemMatch 中不能一起工作