这是我的玩家模型
var mongoose = require('mongoose'),Schema = mongoose.Schema;
var playerSchema = Schema({
name: String,
password: String,
country: String
});
mongoose.model('players', playerSchema);
这是我的国家模型
var mongoose = require('mongoose'),Schema = mongoose.Schema;
var countrySchema = Schema({
name: String,
isActive: Boolean
});
mongoose.model('countries', countrySchema);
这是app.js
mongoose.model('players').find({}, function (err, players) {
console.log(players);
if (err) {
return console.error(err);
} else {
res.format({
html: function(){
res.render('players/index', {
title: 'Players List',
"players" : players
});
},
json: function(){
res.json(players);
}
});
}
});
在玩家模型中我有countryId,在国家模型中我有相应的countryName。现在我想找到国家名称相同的find()查询的玩家。
答案 0 :(得分:2)
您可以使用mongoose 填充方法
请参阅此链接:mongoose populate
在你的例子中,它是这样的:
mongoose.model('players').find().populate('country').exec(function(err,players){
});
这将为您提供countryID和Name
的结果答案 1 :(得分:0)
mongodb是nosql-database,而不是像mysql / postgre这样的关系数据库。因此,对数据建模不像关系数据库,您可以在其中创建一个连接两个表的查询(在mongodb中,“表”称为集合)。
在MongoDB和您当前的架构中,您首先需要找到所需国家/地区的countryId。然后找到那个国家的球员。
替代品;
此外,在您的playerSchema中,country
应该是ObjectId
,而不是String
。