【问题标题】: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()”
    }

});

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

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

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

【问题讨论】:

    标签: node.js mongodb express mongoose nosql


    【解决方案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/

      【讨论】:

        猜你喜欢
        • 2020-12-04
        • 2017-07-15
        • 2018-07-12
        • 2017-05-20
        • 1970-01-01
        • 2017-10-26
        • 2020-06-30
        • 2016-10-02
        • 2021-10-27
        相关资源
        最近更新 更多