Мы структурированы в одной точке mongodb, которую я хотел бы описать здесь.
Мы используем mongoose 5.4 и создаем модель, как показано ниже:
var userSchema = mongoose.Schema({
id:{ type: Number, default: 1 },
first_name: String,
last_name: String,
mail: String,
password: String,
dob: { type: String, default: '' },
gender: { type: String, default: '' },
profile_photo: { type: String, default: '' },
ethnicity: { type: String, default: '' },
contact_number: { type: String, default: '' },
user_type: Number,
address1: { type: String, default: '' },
address2: { type: String, default: '' },
area: { type: String, default: '' },
city: { type: String, default: '' },
country: { type: String, default: '' },
postcode: { type: String, default: '' },
business_name: { type: String, default: '' },
ip_address: String,
status: Number,
tag_line: { type: String, default: '' },
is_influencer: Number,
wallet_id: String,
token_balance: { type: Number, default: 0 },
point_balance: { type: Number, default: 0 },
badges: [String],
membership: { type: Schema.Types.ObjectId, ref: 'Membership' },
transaction: [{ type: Schema.Types.ObjectId, ref: 'Transaction' }],
property: [{ type: Schema.Types.ObjectId, ref: 'Property' }],
reviews: [{ type: Schema.Types.ObjectId, ref: 'Review' }],
created_date: String,
});
var User = mongoose.model('User', userSchema);
var propertySchema = mongoose.Schema({
id: Number,
property_name: String,
address1: String,
area: String,
post_code: String,
category: [{ type: Schema.Types.ObjectId, ref: 'Category' }],
category_id: [Number],
property_desc: String,
property_images: String,
slug : String,
user_id: Number,
business_key: String,
user: { type: Schema.Types.ObjectId, ref: 'User' },
reviews: [{ type: Schema.Types.ObjectId, ref: 'Review' }],
status: Number,
is_claimed: Number,
created_date: String,
});
var Property = mongoose.model('Property', propertySchema);
var categorySchema = mongoose.Schema({
id: Number,
category_name: String,
status: Number,
user: { type: Schema.Types.ObjectId, ref: 'User' },
property: [{ type: Schema.Types.ObjectId, ref: 'Property' }],
created_date: String,
updated_date: String
});
var Category = mongoose.model('Category', categorySchema);
Мы также используем асинхронныйждать этого проекта.мы выбираем местоположения, используя метод ниже, чтобы получить данные о местоположении, а также пользователя и категории.
sortClause = {};
sortClause.user=parseInt(-1);
let properties = await Property.find({'status':{$in:[1,2]}}).populate({path: 'user',
model: 'User',select: 'first_name last_name mail contact_number'}).populate({path: 'category',
model: 'Category',select: 'category_name id'}).sort(sortClause).skip(skip).limit(perpage).exec();
, поэтому, когда мы получаем данные в объекте свойств после выполнения вышеуказанной строки, мы получаем свойства, но, поскольку мы сортируем поПользовательский столбец модели свойств правильно выбирает данные.Он сортируется по objectID, и мы хотели бы получить имя пользователя по имени.
Я попытался указать `{'user.first_name': - 1} в порядке сортировки, но он не работает вообще.
Когда мы сортируем по строковому или числовому столбцу, он работает нормально, но здесь мой ожидаемый результат будет немного другим. Здесь мы хотели бы применить сортировку к user.first_name (Здесь в приведенном выше примере user - это столбец ObjectId, который заполняет данные пользователя.и я хотел бы отсортировать по столбцу first_name пользователя) Как мы можем получить свойства на основе столбца user_name пользователя?Есть ли какие-либо предложения по этой проблеме.