我已经在mongo上玩了一个星期了,但是我仍然不知道如何用php修改mongo中的嵌套数组。
这是一份样本文件…

array (
  '_id' => new MongoId("4cb30f560107ae9813000000"),
  'email' => '[email protected]',
  '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',
    ),
  ),
)

我不想做的是删除productions数组中的一个数组,但是我不知道怎么做。我一直在玩“update('$pull'=>…etc)”,但一直没能成功。

最佳答案

好吧,有几种方法可以做到这一点。对你来说,我会做一些
mymongoobject.update( $unset : { "productions.2" : 1 } }
这基本上是说,要取消“.2”元素的生产。一些docs here
现在$pull也可以工作了,但它有点难,因为“productions”实际上是一个数组数组(或带有子对象的对象)。所以你必须精确地匹配数组:
mymongoobject.update( $pull : { "productions" : {'title':'d', 'date':'1286811356.05'} }
在上面的例子中,unset可能是最简单的选项(尽管它会在数组中留下一个“洞”)。

08-19 01:56