这是我的架构:
var countries = new Schema({
name: String,
capital: String,
body: String,
flag: {data: Buffer, contentType: String },
population: String,
currency: String
});
我想选择字段名称和资本。
这是我的查询:
countries.find({}, 'name capital', { skip: rand, limit: 1}, function(err, result){
if (err) return handleError(err);
console.log('Country :' + result);
callback(null, result);
});
但结果打印整个文档。 result.name未定义。
我尝试了不同的语法,比如
countries.find({}, {'name':1, 'capital':1}, ....
但没有选择。
有什么想法吗?
答案 0 :(得分:0)
find()
会返回一个结果数组,即使您将其限制为1也是如此。
这可能是您result.name
undefined
的原因。因此,要访问您的name
或capital
,您必须使用:
console.log("Country name:", result[0].name);
console.log("Country capital:", result[0].capital);
也许您想使用findOne()
,它不会直接返回数组而是返回对象。
两种语法都应该有效,name capital
和{ name: 1, capital: 1 }
。