1. ホーム
  2. mongodb

Mongoose で明瞭な値のクエリを実行するには?

2023-07-25 09:48:22

質問

私は、あるコレクションについて、すべてのユニークな都市を取得することができるようにしたい、という問題を抱えています。

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 が返すものを可能な限りフィルタリングする必要はありません。

どのように解決するのですか?

Mongoose 3.xのためのアップデートを提供します。

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