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

zzoitvuj  于 2023-04-30  发布在  Go
关注(0)|答案(5)|浏览(101)

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

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

zpf6vheq

zpf6vheq1#

只是为了给予 Mongoose 3更新。x:

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

rlcwz9us2#

在我的程序中,这段代码是有效的。

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

通过node.js v0.4.7, Mongoose 1。3.3

u4vypkhs

u4vypkhs3#

我通读了源代码,node-mongodb-native驱动程序是该类的动力。所以在连接对象上。所以在你完成 Mongoose 之后。connect(mongodb://),你可以给予一下。

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

  });
}
3lxsmp7m

3lxsmp7m4#

const findBornCity = async() => {
    const bornCity = await Person.find().distinct("born_in_city")
    return bornCity
}
dced5bon

dced5bon5#

Model.distinct("field")
   .exec()
   .then(result => {
      console.log(result);
   });

https://www.cltechhome.com/2023/02/how-do-i-query-for-distinct-values-in.html

相关问题