Programing

Mongoose에서 고유 한 값을 어떻게 쿼리합니까?

lottogame 2020. 12. 4. 07:43
반응형

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와 동등한 것은없는 것 같습니다. 이 작업을 수행하기 위해 모든 문서를 직접 반복하는 유일한 옵션입니까, 아니면 더 나은 솔루션이 있습니까?

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, mongoose 1.3.3 제작


나는 소스 코드를 읽었고 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){

  });
}

참고 URL : https://stackoverflow.com/questions/6043847/how-do-i-query-for-distinct-values-in-mongoose

반응형