gpt4 book ai didi

node.js - 来自填充模型的 Mongoose 随机和混合响应

转载 作者:太空宇宙 更新时间:2023-11-04 02:11:01 26 4
gpt4 key购买 nike

我正在使用 Node js 和 Mongoose 为 MongoDB 构建大型社交网络,需要一些帮助。

我的想法是混合模型的响应,显示用户正在关注的类别中的一篇帖子,然后显示用户也关注的另一个类别中的帖子,然后显示组(私有(private)类别)中的帖子。类似的 3 + 1(3 个类别 + 1 个群组)帖子,但用户可以关注多个类别,并拥有多个群组。

有什么东西可以用来从随机类别+组中获取帖子吗?我在这里尝试不通过用数学编写随机逻辑来发明轮子

这是我的简化架构:

var userSchema = new Schema({
groups: [{type: Schema.Types.ObjectId, ref: 'Group'}],
followingCategories: [{type: Schema.Types.ObjectId, ref: 'Category'}]
});

var postSchema = new Schema({
user: {type: Schema.Types.ObjectId, ref: 'User'},
category: {type: Schema.Types.ObjectId, ref: 'Category'}
});

var categorySchema = new Schema({
user: {type: Schema.Types.ObjectId, ref: 'User'},
group: {type: Schema.Types.ObjectId, ref: 'Group'},
posts: [{type: Schema.Types.ObjectId, ref: 'Post'}]
});

var groupSchema = new Schema({
users: [{type: Schema.Types.ObjectId, ref: 'User'}],
categories: [{type: Schema.Types.ObjectId, ref: 'category'}]
});

它必须可以通过用户模型使用,例如:

User.findById(..., function(err, user){
//logic that gets user posts from random categories and groups
});

请记住以下几点:

  1. 速度必须很快(预计数百万条帖子)

  2. 它使用 limit(10)skip(int) 进行 API 延迟加载

  3. 类别和组是随机的,但帖子是按顺序{created_at: desc}

  4. 用户可以关注多个类别,并且可以加入多个群组

最佳答案

如果我完全理解你的问题(有点不清楚),那么你正在寻找聚合和 $sample运算符(operator)。它从集合中随机选择文档。

关于node.js - 来自填充模型的 Mongoose 随机和混合响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42133579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com