我有以下用户架构
const mongoose = require("mongoose");
const validator = require("validator");
const userSchema = new mongoose.Schema(
{
name: {
type: String,
required: [true, "Name is required"],
trim: true,
},
email: {
type: String,
required: [true, "Email is required"],
validate: validator.isEmail,
trim: true,
},
},
{
timestamps: true,
}
);
module.exports = userSchema;
我有以下圆的图式
const mongoose = require("mongoose");
const circlesSchema = new mongoose.Schema(
{
circleName: {
type: String,
required: [true, "Circle name is required"],
trim: true,
unique: [true, "Circle name is already exists"],
},
blockedUsers: [{ type: mongoose.Schema.Types.ObjectId, ref: "Users" }],
},
{
timestamps: true,
}
);
module.exports = circlesSchema;
在Circle模式中有字段blockedUsers数组,如果用户objectID在这个数组中,则意味着用户没有访问这个圈子的权限。现在我想获取所有具有访问圈子权限的用户及其名称。我是Mongodb的新手,正在寻找工作mongo查询。
1条答案
按热度按时间5anewei61#
为此,您必须执行两个查询。
您也可以使用单个聚合管道来实现这一点,但维护成本超过了好处。
此外,我建议您阅读those blog posts以进行模式设计,您当前的模式设计可能会因为大量(数十万)被阻止的用户而中断。