一尘不染

如何在猫鼬中查询不同的值?

node.js

我有一个问题,我希望能够获得一个集合的所有唯一城市,而我的代码如下所示:

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等效的东西。是我自己遍历所有文档的唯一选择,还是有更好的解决方案?

为了尝试使用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尽可能地过滤返回的内容。


阅读 216

收藏
2020-07-07

共1个答案

一尘不染

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

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