如何在数组内的嵌套对象数组上执行更新

时间:2015-08-28 19:31:10

标签: javascript mongodb mongoose

我想对数组中嵌套对象中存在的字段执行更新。

考虑一下:

var PlatformPhotoAlbumSchema = new Schema({
  platformAlbumId: String,
  platformPhotoIds: [String]
}, { _id : false });

var SocialProfileSchema = new Schema({
  platformPhotoAlbums: [PlatformPhotoAlbumSchema]
});

示例:

{
platformPhotoAlbums: [
    {
    platformAlbumId: "a",
    platformPhotoIds: ["1","2"]
    },
    {
    platformAlbumId: "b",
    platformPhotoIds: ["3","4"]
    },
    {
    platformAlbumId: "c",
    platformPhotoIds: ["5","6"]
    }
]

}
  1. 如何使用" c"更新现有对象,例如platformAlbumId。 with platformPhotoIds:[" 5"," 6"," 7"]
  2. 如果没有带有" c"的platformAlbumId的文档,则使用platformAlbumId创建一个新对象为" c"和platformPhotoIds:[" 5"," 6"," 7"]并插入platformPhotoAlbums。
  3. 我想在一个mongodb查询中执行此操作。知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

从你想要完成的事情来看,我认为有一个更简单的概念可以考虑你的查询实际需要做什么

您希望将新对象推送到看起来像

的对象数组中
platformAlbumId: "c"

和(在此之前)删除数组中与findAndModify

的查找匹配的所有预先存在的项目

编辑:

实际上要好于此,您应该能够使用platformAlbumId命令查询platformPhotoIds值,使用新的upsert值更新集,以及+ scale_x_date() bool设置为true http://docs.mongodb.org/manual/reference/command/findAndModify/