我差不多完成了我的OneToMany CRUD MEAN应用程序的构建,但我遇到了一个问题。
我的数据库中有两个集合
游戏:
{ "_id" : 1,
"name" : "Bethesda Softworks" }
和发布商:
<form>
<div class="form-group">
<label class="form-control">Title: {{ game.title }}</label>
<label class="form-control">Developer: {{ game.developer}}</label>
<label class="form-control">Publiser: {{ game.publisherId }}</label>
<label class="form-control">Year: {{ game.year }}</label>
<label class="form-control">Gerne: {{ game.gerne }}</label>
<label class="form-control">ID: {{ game._id }}</label>
<a href="#/games" class="btn btn-default"> Back</a>
在我的游戏详情html文件中我有这个:
from jinja2 import Template
有没有办法显示发布商名称而不是_id?
答案 0 :(得分:1)
您可以使用$lookup
聚合函数在games
中使用publishers
进行左外连接Mongoose
集合,以获取嵌入了游戏文档的发布商文档(如果存在)。 / p>
您可以使用游戏中嵌入的发布商字段填充UI
出版商
> db.publishers.find({_id:1}).pretty()
{ "_id" : 1, "name" : "Bethesda Softworks" }
游戏
> db.games.find({_id:1}).pretty()
{
"_id" : 1,
"title" : "Prey",
"developer" : "Arkane Studios",
"publisherId" : 1,
"year" : 2017,
"gerne" : "Action"
}
$查找
> db.games.aggregate(
[
{
$lookup:
{
from : "publishers",
localField:"publisherId",
foreignField:"_id",
as : "publisher"
}
}
]
).pretty()
输出
{
"_id" : 1,
"title" : "Prey",
"developer" : "Arkane Studios",
"publisherId" : 1,
"year" : 2017,
"gerne" : "Action",
"publisher" : [
{
"_id" : 1,
"name" : "Bethesda Softworks"
}
]
}
>