在mongoose中附加子记录

时间:2013-09-11 08:29:40

标签: node.js mongodb express mongoose nosql

这是我的数据库

db.table_name( {
_id: “object_id()”,
user_id: <user_name>,
playlist:
    {
        types:  "show",
        video_url: “video source url”,
        thumb_url: “thumb url”,
        title: “video title”,
        created_date: “new date()”
    }
});

现在,该表说明,有一个用户,有播放列表字段,现在我想要当我第一次插入记录时,插入应该像这样:

_id: objectid12345,
user_id: 1,
playlist:
    {
        types:  "show",
        video_url: “video source url”,
        thumb_url: “thumb url”,
        title: “video title”,
        created_date: “new date()”
    }
});

现在,当我第二次插入记录时,对于同一个用户,应首先检查同一用户的数据是否存在?

1.如果是,则应按如下方式插入数据:

_id: objectid12345,
user_id: 1,
playlist:
    {
        types:  "show",
        video_url: “video source url”,
        thumb_url: “thumb url”,
        title: “video title”,
        created_date: “new date()”
    },
playlist:
    {
        types:  "show",
        video_url: “video source url”,
        thumb_url: “thumb url”,
        title: “video title”,
        created_date: “new date()”
    }

});

同样,当我为同一个用户进行下一次插入时,应该像这样插入:

_id: objectid12345,
user_id: 1,
playlist:
    {
        types:  "show",
        video_url: “video source url”,
        thumb_url: “thumb url”,
        title: “video title”,
        created_date: “new date()”
    },
playlist:
    {
        types:  "show",
        video_url: “video source url”,
        thumb_url: “thumb url”,
        title: “video title”,
        created_date: “new date()”
    },
playlist:
    {
        types:  "show",
        video_url: “video source url”,
        thumb_url: “thumb url”,
        title: “video title”,
        created_date: “new date()”
    }

});

也就是说,应为同一用户追加播放列表记录。

  1. 如果同一用户不存在记录,则应在我们第一次插入记录时插入记录。
  2. 现在,我不知道如何使用猫鼬 提前致谢

2 个答案:

答案 0 :(得分:1)

首先,播放列表应该是一个对象数组,所以你需要:

playlists : [
  {
    types:  "show",
    video_url: “video source url”,
    thumb_url: “thumb url”,
    title: “video title”,
    created_date: “new date()”
  },
  {
    types:  "show",
    video_url: “video source url”,
    thumb_url: “thumb url”,
    title: “video title”,
    created_date: “new date()”
  },
  {
    types:  "show",
    video_url: “video source url”,
    thumb_url: “thumb url”,
    title: “video title”,
    created_date: “new date()”
  }
]

您还希望将其定义为嵌套架构,方法如下:

var playlistSchema = new mongoose.Schema({
  type: String,
  video_url: String
});

然后在您的用户架构中引用它,例如:

var userSchema = new mongoose.Schema({
  ser_id: String
  playlists: [playlistSchema]
});

当您为用户创建新的播放列表时,Mongoose会自动为其提供一个可用于访问它的唯一_id

在添加播放列表之前检查给定用户是否存在 - 您的应用程序代码应该真正执行此操作,并将用户创建为单独的操作。

答案 1 :(得分:0)

作为Simon,您需要将播放列表作为播放列表架构的数组。完成后,您需要阅读两个文档:

修改文件 - http://docs.mongodb.org/manual/tutorial/modify-documents/ 和数组更新运算符 - http://docs.mongodb.org/manual/reference/operator/update-array/