복붙노트

[MONGODB] 어떻게 몽구스의 고유 값에 대한 쿼리는 무엇입니까?

MONGODB

어떻게 몽구스의 고유 값에 대한 쿼리는 무엇입니까?

나는 모든 독특한 컬렉션의 도시,이 같은 내 코드의 외모 뭔가를 얻을 수있을하고자하는 문제가있다 :

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

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

기본 MongoDB를 나는 단지 ( "born_in_city") db.person.distinct을 할 수 있지만, 몽구스 아무것도 동등한있을 것 같지 않습니다. 이 작업을 수행 할 수있는 문서 나 자신의 모든 반복하는 유일한 방법은, 아니면 더 나은 솔루션이있다?

답변자에 의해 제안 기본 노드 MongoDB의 모국어를 사용하기 위해 나는이 일을 시도 :

mongoose.connection.db.collections(function(err, collections){
  collections[0].distinct('born_in_city', function( err, results ){
    console.log( err, results );
  });
});

그러나 결과는 비어 있고 오류가 없습니다. 또한 이름 만이 필요한 수집을 가져 오기보다는 수집 가능한 모든에 경우 반환 무엇을 필터에 가질 수있을 것을 선호합니다.

해결법

  1. ==============================

    1.그냥 몽구스 3.x에 대한 업데이 트를 제공합니다 :

    그냥 몽구스 3.x에 대한 업데이 트를 제공합니다 :

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

    2.내 프로그램에서이 코드는 작동합니다.

    내 프로그램에서이 코드는 작동합니다.

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

    으로 Node.js를 v0.4.7, 몽구스 1.3.3

  3. ==============================

    3.나는 소스 코드를 읽고 노드 MongoDB의 네이티브 드라이버는 어떤 능력 클래스입니다. 연결 개체에 따라서. 당신이 mongoose.connect했을 그래서 후 (MongoDB를 : //)이 탄 줄 수 있습니다.

    나는 소스 코드를 읽고 노드 MongoDB의 네이티브 드라이버는 어떤 능력 클래스입니다. 연결 개체에 따라서. 당신이 mongoose.connect했을 그래서 후 (MongoDB를 : //)이 탄 줄 수 있습니다.

    if(mongoose.connections.length > 0) {
      var nativeconn = mongoose.connections[0].conn;
      nativeconn.person.distinct('born_in_city', function(error, results){
    
      });
    }
    
  4. from https://stackoverflow.com/questions/6043847/how-do-i-query-for-distinct-values-in-mongoose by cc-by-sa and MIT license