Я новичок в MongoDb и Mongoose, и это может звучать глупо, но я немного озадачен тем, как все работает.
У меня есть две несвязанные модели: page
модель и team
модель, которая выглядит примерно так:
// page.js
const mongoose = require('mongoose');
const schema = new mongoose.schema({
name: String,
body: {
title: String,
},
});
const Page = mongoose.model('Page', schema);
export default Page;
и
// team.js
const mongoose = require('mongoose');
const schema = new mongoose.schema({
name: String,
position: Number,
});
const Team = mongoose.model('Team', schema);
export default Team;
То, что я хочу сделать, - это найти одну страницу (Page.findOne({...})
) для включения всех команд. Результат будет выглядеть так:
{
_id: 'some_id',
name: 'some name',
body: {
title: 'A title',
teams: [
{ name: 'Team1', position: 1 },
{ name: 'Team2', position: 2 },
// ...
{ name: 'Team3', position: 3 },
],
},
}
Я посмотрел на populate
, но для этого нужны ссылки на другие модели.
Посмотрел virtuals
, но насколько я понимаю, это должно работать только со свойствами экземпляра.
Каким будет наилучший подход для достижения этой цели без добавления отношений между двумя моделями?
Это я сейчас и делаю:
const pageResult = await Page.findOne({});
let page = pageResult.toObject();
page.body.team = await Team.find({});