在猫鼬中追加子记录

Posted

技术标签:

【中文标题】在猫鼬中追加子记录【英文标题】:Append sub record in mongoose 【发布时间】:2013-09-15 04:27:42 【问题描述】:

这是我的数据库

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()”
    

);

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

    如果同一用户不存在记录,则应在我们第一次插入记录时插入记录。

现在,我不知道如何使用 mongoose 提前致谢

【问题讨论】:

【参考方案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,您可以使用它来访问它。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于在猫鼬中追加子记录的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬中获取 NumberLong 记录

在猫鼬中,如何根据相关集合中的值查找记录?

在猫鼬中删除子文档

如何仅在猫鼬中获取子文档?

如何仅在猫鼬中获取子文档?

如何在猫鼬中保存子文档的数组?