dongwei3336 2010-10-11 16:52
浏览 131
已采纳

PHP / Mongo:你如何更新嵌套数据?

I've been playing around with Mongo for about a week now and I still can't work out how to modify nested arrays in Mongo with php.

So here is a sample document...

array (
  '_id' => new MongoId("4cb30f560107ae9813000000"),
  'email' => 'mo@maurice-campobasso.com',
  'firstname' => 'Maurice',
  'lastname' => 'Campobasso',
  'password' => 'GOD',
  'productions' => 
  array (
    0 => 
    array (
      'title' => 'a',
      'date' => '1286811330.899',
    ),
    1 => 
    array (
      'title' => 'b',
      'date' => '1286811341.183',
    ),
    2 => 
    array (
      'title' => 'c',
      'date' => '1286811350.267',
    ),
    3 => 
    array (
      'title' => 'd',
      'date' => '1286811356.05',
    ),
  ),
)

What I wan't to do is delete an array inside the productions array, but I can't work out how. I've been playing with 'update('$pull' => ...etc)' but I haven't been able to make it work.

  • 写回答

2条回答 默认 最新

  • douchun6221 2010-10-11 17:01
    关注

    OK, there are a few ways to do this. In your case, I would do something like

    mymongoobject.update( $unset : { "productions.2" : 1 } }

    That's basically saying to unset the ".2" element of productions. Some docs here.

    Now $pull should also work, but it's a little tougher because "productions" is actually an array of arrays (or objects with sub-objects). So you'd have to match arrays exactly:

    mymongoobject.update( $pull : { "productions" : {'title':'d', 'date':'1286811356.05'} }

    In the case above, the unset is probably the easiest option (though it will leave a "hole" in the array)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法