dtt83024 2014-10-01 17:14
浏览 178
已采纳

Mongo嵌套对象数组更新

I'm trying to update a value in a document and i haven't seen an example that shows me what i need to do. Here is how my document looks:

{
    "_id" : ObjectId("5429e8a53150d03d541c7a53"),
    "foo" : {
        "bar" : {
            "0" : {
                "email" : {
                    "0" : "bob@aol.com"
                }
            }
        }
    }
}

This is of course not my real object but represents the structure. how do i update bob@aol.com to be whatever@whocares.net ?

Also how would i remove this same element?

Also (for bunus points) how would i update this using the php Mongo class?

  • 写回答

1条回答 默认 最新

  • dongyouji7022 2014-10-01 20:39
    关注

    Ok i figured it out. This is how you do it in the console:

    db.test.update({"foo.bar.0.email" : {"0":"bob@aol.com"} },{$set:{"foo.bar.0.email.0":"whatever@whocares.net"}});
    

    And this is how you do it in PHP using the Mongo class

    $db = new Mongo("connection stuff");
    
    $condition = array('foo.bar.0.email' => array('0' => 'bob@aol.com'));
    $data = array('$set' => array('foo.bar.0.email.0' => 'whatever@whocares.net'));
    
    $db->test->update($condition, $data);
    

    I hope this helps someone because it took me several hours to figure this out.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用