如何在Mongoose中查询不同的值?

我有一个问题,我希望能够获得一个集合的所有独特的城市,我的代码看起来像这样:

var mongoose = require("mongoose"), Schema = mongoose.Schema; var PersonSchema = new Schema({ name: String, born_in_city: String }); var Person = mongoose.model('Person', PersonSchema); 

在本地MongoDb我可以做db.person.distinct("born_in_city") ,但似乎没有什么等同于Mongoose。 是唯一的select迭代所有的文件,我自己做到这一点,还是有更好的解决scheme?

在尝试使用node-mongodb-nativebuild议的底层node-mongodb-native ,我尝试这样做:

 mongoose.connection.db.collections(function(err, collections){ collections[0].distinct('born_in_city', function( err, results ){ console.log( err, results ); }); }); 

results是空的,没有错误。 我也希望能够通过名称只获取所需的集合,而不是过滤哪些collections如果可能的话。

只是为了给Mongoose 3.x更新:

 MyModel.find().distinct('_id', function(error, ids) { // ids is an array of all ObjectIds }); 

在我的程序中,这个代码工作。

 Person.collection.distinct("born_in_city", function(error, results){ console.log(results); }); 

由node.js v0.4.7,mongoose1.3.3

我通读源代码和节点mongodb本地驱动程序是什么权力类。 所以在连接对象上。 所以在你完成mongoose.connect(mongodb://)之后,你可以给这个镜头一个镜头。

 if(mongoose.connections.length > 0) { var nativeconn = mongoose.connections[0].conn; nativeconn.person.distinct('born_in_city', function(error, results){ }); }