question
データベースに300 個のオブジェクトの大規模なコレクションがありますtest
。MongoDB のインタラクティブ シェルを使用すると、このコレクションを簡単に操作できます。ただし、express.js アプリケーションで Mongoose を介してコレクションを取得しようとすると、空の配列が返されます。
私の質問は、Express で再作成するのではなく、既存のデータセットにアクセスするにはどうすればよいかということです。ここにコードを示します。
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
Mongoose では、スキーマの下、またはモデルを宣言するときに 3 番目の引数としてコレクション名を指定する機能が追加されました。それ以外の場合は、モデルにマップした名前で指定された複数形のバージョンが使用されます。
スキーママップされた次のようなものを試してください。
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