首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Mongoose访问预先存在的集合?

如何使用Mongoose访问预先存在的集合?
EN

Stack Overflow用户
提问于 2011-04-27 02:33:43
回答 6查看 150.4K关注 0票数 155

我在一个数据库test中有一个包含300个question对象的大型集合。我可以通过MongoDB的交互式shell轻松地与这个集合进行交互;但是,当我试图在express.js应用程序中通过Mongoose获取这个集合时,我得到了一个空数组。

我的问题是,我如何访问这个已经存在的数据集,而不是在express中重新创建它?下面是一些代码:

代码语言:javascript
复制
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); });

这将输出以下内容:

代码语言:javascript
复制
null [] 0
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-11-03 23:21:05

Mongoose添加了在模式下指定集合名称的功能,或者在声明模型时指定为第三个参数。否则,它将使用映射到模型的名称所给出的复数形式。

尝试执行类似以下的操作,模式映射:

代码语言:javascript
复制
new Schema({ url: String, text: String, id: Number}, 
           { collection : 'question' });   // collection name

或模型映射:

代码语言:javascript
复制
mongoose.model('Question', 
               new Schema({ url: String, text: String, id: Number}), 
               'question');     // collection name
票数 276
EN

Stack Overflow用户

发布于 2011-07-17 09:12:32

如果任何人只是想要一个简单的复制粘贴插件功能,下面是Will Nathan的答案的一个抽象:

代码语言:javascript
复制
function find (name, query, cb) {
    mongoose.connection.db.collection(name, function (err, collection) {
       collection.find(query).toArray(cb);
   });
}

只需执行find(collection_name, query, callback);即可得到结果。

例如,如果我在集合'foo‘中有一个文档{a:1},并且我想列出它的属性,我会这样做:

代码语言:javascript
复制
find('foo', {a : 1}, function (err, docs) {
            console.dir(docs);
        });
//output: [ { _id: 4e22118fb83406f66a159da5, a: 1 } ]
票数 68
EN

Stack Overflow用户

发布于 2016-10-25 09:28:50

你可以这样做,然后你就可以访问mongoose中的原生mongodb函数了:

代码语言:javascript
复制
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
        })
    });

});
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5794834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档