【问题标题】:How to complex update on MongoDB如何在 MongoDB 上进行复杂更新
【发布时间】:2014-11-22 13:53:06
【问题描述】:

我有一个问题。我的数据是这样的:

{
  "name" : "username",
  "surname" : "surname",
  "playlists": {
    "name": "playlistName",
    "date": "27-09-14",
    "musics": [
      "music name 1",
      "music name 2"
    ]
  },
  "playlists": {
    "name": "playlistName2",
    "date": "27-09-14",
    "musics": [
      "music name 1",
      "music name 2"
    ]
  }

}


我想在此数据中再添加一个“播放列表”部分。
我的数据应该是这样的:

{
  "name" : "username",
  "surname" : "surname",
  "playlists": {
    "name": "playlistName",
    "date": "27-09-14",
    "musics": [
      "music name 1",
      "music name 2"
    ]
  },
  "playlists": {
    "name": "playlistName2",
    "date": "27-09-14",
    "musics": [
      "music name 1",
      "music name 2"
    ]
  },
  "playlists" : {
    "blabla" : "blabla"
  }

}

更新查询无效。
我如何能?提前致谢。
我在尝试

$dbData = array('$set' => array('playlists' => array ('blabla' => 'blabla')));
$users->update(array('_id' => new MongoId ('541f0e2216c8272c058b4567')), $dbData);

【问题讨论】:

  • 给我们看一些代码。你是怎么做到的?
  • 您的意思是您想将另一个播放列表添加到您数据中存在的播放列表中?还是只想添加另一个数组?
  • 更容易告诉我们您究竟需要什么
  • 我想将数组添加到现有数据中。

标签: mongodb crud mongodb-query


【解决方案1】:

也可以有多个相同的键,但不建议这样做(您有 2 个 playlists 键并且想要更多)。

一个合理的解决方案是把playlists做成一个数组,然后将元素压入其中。

{
  "name" : "username",
  "surname" : "surname",
  "playlists": [...]
}

$dbData = array('$push' => array('playlists' => array ('blabla' => 'blabla'))); 
$users->update(array('_id' => new MongoId ('541f0e2216c8272c058b4567')), $dbData);

【讨论】:

    猜你喜欢
    • 2016-08-18
    • 2014-04-09
    • 2016-06-28
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多