什么是使用nodejs的Mongoose查询查询?

这是我的球员模型

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()查询来查找具有国家名称的玩家。

你可以使用mongoose填充方法

参考这个链接: mongoose填充

在你的例子中,这是这样的:

 mongoose.model('players').find().populate('country').exec(function(err,players){ }); 

这会给你countryID和Name的结果

mongodb是nosql-database,不是像mysql / postgre这样的关系型数据库。 因此,对数据进行build模不像relationaldatabses,您可以在其中创build一个连接两个表的查询(在MongoDB中,“表”称为集合)。

在MongoDB和你现在的模式中,你首先需要find你想要的国家的国家ID。 然后find那个国家的球员。

备择scheme;

  1. 您可以直接在播放器集合上存储countryName
  2. 您可以将playerId存储在国家/地区collections中的数组中

更进一步,在你的playerSchema中, country应该是ObjectId ,而不是String