我想使用mongoDB的两个集合来获得活动用户项目



在我的项目中,我有一个用户和项集合。我维护了用户的活动状态。我想使用用户和项目集合获取活动用户的项目。

Item Collection
const item_model =new mongoose.Schema({
user_id:{
type: mongoose.Schema.Types.ObjectId,
ref: user,
require: true,
},
category: {
type: String,
require: true,
},
name: {
type: String,
require: true,
},
price: {
type: Number,
require: true,
},
stock: {
type: Number,
require: true,
}
}
User Collection
var user = new Schema({
firstName:{
type: String,
require: true
},
lastName:{
type: String,
require: true
},
email:{
type: String,
require: true
},
password:{
type: String,
require: true
},
user_status:{
type: String,
require: true,
default: 1
}
}

我可以加入这两个表并获取活动用户项目吗?

您的物品收藏应该是

const item_model =new mongoose.Schema({
user_id:{
type: mongoose.Schema.Types.ObjectId,
ref: user,
require: true,
},
category: {
type: String,
require: true,
},
name: {
type: String,
require: true,
},
price: {
type: Number,
require: true,
},
stock: {
type: Number,
require: true,
}
}

你的用户收藏应该是

var user = new Schema({
user_id:{
type: mongoose.Schema.Types.ObjectId,
require: true,
},
firstName:{
type: String,
require: true
},
lastName:{
type: String,
require: true
},
email:{
type: String,
require: true
},
password:{
type: String,
require: true
},
user_status:{
type: String,
require: true,
default: 1
}
}

现在让我们从用户数据模型中获取活动用户

const _ = require('lodash')
const userQuery = {
user_status: 'active'
}
const activeUsers = await userDataModel.find(userQuery);
//Now extract only user_ids from activeUsers Object
if(activeUsers && activeUsers.length>0){
const user_ids = _.map(activeUsers, 'user_id');
// once you get user_ids for all active users now lets create the query to fetch items for all active users
const itemsQuery = {
user_id: {$in: user_ids}
}
const itmesData = await itemsDataModel.find(itemsQuery); 
if(itmesData) {
return itmesData;
} else {
return "Items data not found"
}
} else {
return "Active users not found"
}

最新更新