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

我有一个问题,我希望能够为一个集合获取所有独特的城市,我的代码如下所示:

var mongoose = require("mongoose"),
Schema = mongoose.Schema;

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

在 native 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 返回的内容。

最佳答案

只是为 Mongoose 3.x 提供更新:

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

https://stackoverflow.com/questions/6043847/

相关文章:

mongodb - mongoDB中的字符串字段值长度

mongodb - MongoDB stats() 函数是否返回位或字节?

mongodb - 在 MongoDB 中传递给 $in 查询的最大参数数是多少?

mongodb - 如何按插入时间对 Meteor 集合进行排序?

c# - .NET MongoDB 连接的最佳实践?

MongoDB 通过 Mongoose JS - findByID 是什么?

python - 如何从 pymongo 发出 "show dbs"

javascript - 如何使用对象 ID 数组创建 Mongoose 模式?

sql - MongoDB如何避免SQL注入(inject)困惑?

mongodb - 如何在 Mongoose 中进行原始 mongodb 操作?