表示するユーザーのリストがあります。私は分野に基づいて選択したカテゴリやフィルタのユーザーに基づいてのみ1フィルタすなわちフィルタユーザーを適用するとき、私は、適切なフィルタ処理結果を得る2つのフィルタ人口統計の複数の条件に基づいてマングースの結果をフィルタリングする方法は?
1)エリア
2)カテゴリー
を持っています。
ここでは、カテゴリとエリアの両方の選択に基づいてユーザーをフィルタリングする必要があります。 希望する結果を得るにはどうすればよいですか?
以下は、選択したカテゴリに基づいてユーザーをフィルタするために私の作業コードです:
User.find().populate('city').populate({path: 'categories', match: { name: { $in: filterCatArray }}}).populate('area').exec(function (err, users) {
users = users.filter(function(user) {
return user.categories; // return only filtered users
});
data = {fulldata:users};
res.render('home',{data:data});
});
ユーザスキーマ:
var userSchema = new Schema({
city: {type: mongoose.Schema.Types.ObjectId, ref: 'City',required: true},
area: {type: mongoose.Schema.Types.ObjectId, ref: 'Area', required: true},
categories: [{type: mongoose.Schema.Types.ObjectId, ref: 'Category', required: true}],
status: { type: Boolean, default: true },
created_at: Date,
updated_at: Date
});
エリアスキーマ
var areaSchema = new Schema({
city: {type: mongoose.Schema.Types.ObjectId, ref: 'City'},
name: { type: String, required: true},
status: { type: Boolean, default: true },
created_at: Date,
updated_at: Date
});
カテゴリースキーマ
var catSchema = new Schema({
name: { type: String, required: true},
status: { type: Boolean, default: true },
created_at: Date,
updated_at: Date
});
市スキーマ
var citySchema = new Schema({
name: { type: String, required: true},
status: { type: Boolean, default: true },
created_at: Date,
updated_at: Date
});
でしょうが'Users = users.filter(u => u.categories.length> 0) 'ポピュレートの条件が一致しなかった場合、結果の配列は空になるので、それらのユーザーを除外します。あなたの質問に説明されていない他の詳細がない限り。詳しく教える? –
私はMongooseを初めて使っていますが、あなたは 'users = users.filter(u => u.categories.length> 0)'の正確な内容をお知らせできますか? – Anirudh
あなたが質問を編集して現在の出力と何を変更する必要があります。そして、適切に答えることができます。 –