[MONGODB] 어떻게 몽구스와 기존 모음에 액세스 할 수?
MONGODB어떻게 몽구스와 기존 모음에 액세스 할 수?
나는 데이터베이스 시험에서 300 개 질문 개체의 큰 컬렉션을 가지고있다. 나는 MongoDB를의 대화 형 쉘을 통해 쉽게 수집과 상호 작용할 수 있습니다; 내가 express.js 응용 프로그램에서 몽구스를 통해 컬렉션을 취득 할 때 그러나, 나는 하늘의 배열을 얻는다.
내 질문은 어떻게 표현에서 그것을 다시 대신이 이미 존재하는 데이터 세트를 액세스 할 수있다? 여기에 몇 가지 코드는 :
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
mongoose.model('question', new Schema({ url: String, text: String, id: Number }));
var questions = mongoose.model('question');
questions.find({}, function(err, data) { console.log(err, data, data.length); });
이 출력 :
null [] 0
해결법
-
==============================
1.몽구스는 스키마에서 컬렉션 이름을 지정할 수있는 기능을 추가, 또는 세 번째 인수로 모델을 선언 할 때. 그렇지 않으면 당신이 모델에 매핑 이름으로 주어진 복수로 버전을 사용합니다.
몽구스는 스키마에서 컬렉션 이름을 지정할 수있는 기능을 추가, 또는 세 번째 인수로 모델을 선언 할 때. 그렇지 않으면 당신이 모델에 매핑 이름으로 주어진 복수로 버전을 사용합니다.
다음과 같이, 하나 스키마 매핑을 시도해보십시오
new Schema({ url: String, text: String, id: Number}, { collection : 'question' }); // collection name
모델 매핑 :
mongoose.model('Question', new Schema({ url: String, text: String, id: Number}), 'question'); // collection name
-
==============================
2.사람이 그냥 쉽게 복사 - 붙여 넣기가 추가 기능을 원하는 경우 여기에 윌 나단의 대답의 추상화입니다 :
사람이 그냥 쉽게 복사 - 붙여 넣기가 추가 기능을 원하는 경우 여기에 윌 나단의 대답의 추상화입니다 :
function find (name, query, cb) { mongoose.connection.db.collection(name, function (err, collection) { collection.find(query).toArray(cb); }); }
간단하게 (COLLECTION_NAME, 쿼리, 콜백) 찾을 수 있습니까; 결과를 제공한다.
예를 들어, 내가 문서가있는 경우 : 콜렉션 '갑'의 {1}을 (를) 내가 속성을 나열 할, 내가 이렇게 :
find('foo', {a : 1}, function (err, docs) { console.dir(docs); }); //output: [ { _id: 4e22118fb83406f66a159da5, a: 1 } ]
-
==============================
3.당신은 몽구스 내부의 기본 MongoDB의 기능에 액세스 할 수 있습니다보다 당신은 같은 것을 할 수 있습니다 :
당신은 몽구스 내부의 기본 MongoDB의 기능에 액세스 할 수 있습니다보다 당신은 같은 것을 할 수 있습니다 :
var mongoose = require("mongoose"); mongoose.connect('mongodb://localhost/local'); var connection = mongoose.connection; connection.on('error', console.error.bind(console, 'connection error:')); connection.once('open', function () { connection.db.collection("YourCollectionName", function(err, collection){ collection.find({}).toArray(function(err, data){ console.log(data); // it will print your collection data }) }); });
-
==============================
4.저도 같은 문제를 겪고 아래 코드와 기존의 몽구스 연결을 사용하여 스키마없는 쿼리를 실행할 수 있었다. 나는 간단한 제약 조건을 추가 한 'A = B'는 이러한 제약 조건을 추가 할 위치를 표시하려면
저도 같은 문제를 겪고 아래 코드와 기존의 몽구스 연결을 사용하여 스키마없는 쿼리를 실행할 수 있었다. 나는 간단한 제약 조건을 추가 한 'A = B'는 이러한 제약 조건을 추가 할 위치를 표시하려면
var action = function (err, collection) { // Locate all the entries using find collection.find({'a':'b'}).toArray(function(err, results) { /* whatever you want to do with the results in node such as the following res.render('home', { 'title': 'MyTitle', 'data': results }); */ }); }; mongoose.connection.db.collection('question', action);
-
==============================
5.당신은 DB에 연결했는지 확인하고 있습니까? (나는 포트가 지정 표시되지 않습니다 때문에 문의)
당신은 DB에 연결했는지 확인하고 있습니까? (나는 포트가 지정 표시되지 않습니다 때문에 문의)
시험:
mongoose.connection.on("open", function(){ console.log("mongodb is connected!!"); });
또한, 당신은 몽고 쉘에 "쇼 컬렉션"당신의 DB 내에서 컬렉션을보기 위해 할 수있는 - 어쩌면 몽구스를 통해 레코드를 추가하려고하고 끝 어디에 있는지?
연결 문자열의 모양에서, 당신은 "테스트"DB에 기록을 볼 수 있습니다.
희망이 도움이!
-
==============================
6.적어도 나에게 분명 아니었다 뭔가 다른, 같은 이름의 새 것으로 실제 수집을 교체하는 일이 없도록 몽구스의 세 번째 매개 변수를 사용하는 경우는, 새로운 스키마 (...)이 실제로 단지 자리라고했고, 대한 기존 스키마 그렇게 방해하지 않는
적어도 나에게 분명 아니었다 뭔가 다른, 같은 이름의 새 것으로 실제 수집을 교체하는 일이 없도록 몽구스의 세 번째 매개 변수를 사용하는 경우는, 새로운 스키마 (...)이 실제로 단지 자리라고했고, 대한 기존 스키마 그렇게 방해하지 않는
var User = mongoose.model('User', new Schema({ url: String, text: String, id: Number}, { collection : 'users' })); // collection name; User.find({}, function(err, data) { console.log(err, data, data.length);});
잘 작동하고 모든 필드를 반환합니다 - 실제가 (원격) 스키마이 필드도 포함되어 있지 않습니다 경우에도 마찬가지입니다. 몽구스는 여전히 새로운 스키마 (...)으로 원하는 것, 그리고 변수는 거의 확실하게 해킹하지 않습니다.
from https://stackoverflow.com/questions/5794834/how-to-access-a-preexisting-collection-with-mongoose by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를이 : 하나 개의 필드에있는 모든 문서를 업데이트 (0) | 2019.12.07 |
---|---|
[MONGODB] '꽤'파일로 MongoDB의 쉘 출력을 인쇄하는 방법은 무엇입니까? (0) | 2019.12.07 |
[MONGODB] 필드가 문자열을 포함하는 경우 확인 (0) | 2019.12.07 |
[MONGODB] MongoDB를 집계 파이프 라인 느린 첫 경기의 단계 이후 (0) | 2019.12.07 |
[MONGODB] $ 조회 집계 필드를 제외 (0) | 2019.12.07 |